У меня есть файл под названием genes.txt
, который я хотел бы стать data.frame. Он получил много строк, каждая строка имеет три поля с разделителями табуляции:
mike$ wc -l genes.txt
42476 genes.txt
Я хотел бы прочитать этот файл в data.frame в R. Я использую команду read.table, например:
genes = read.table(
genes_file,
sep="\t",
na.strings="-",
fill=TRUE,
col.names=c("GeneSymbol","synonyms","description")
)
Кажется, что все нормально, где genes_file
указывает на genes.txt
. Однако количество строк в моем файле data.fram значительно меньше количества строк в моем текстовом файле:
> nrow(genes)
[1] 27896
и вещи, которые я могу найти в текстовом файле:
mike$ grep "SELL" genes.txt
SELL CD62L|LAM1|LECAM1|LEU8|LNHR|LSEL|LYAM1|PLNHR|TQ1 selectin L
похоже, не находятся в data.frame
> grep("SELL",genes$GeneSymbol)
integer(0)
оказывается, что
genes = read.delim(
genes_file,
header=FALSE,
na.strings="-",
fill=TRUE,
col.names=c("GeneSymbol","synonyms","description"),
)
работает просто отлично. Почему read.delim работает, когда read.table не работает?
Если он используется, вы можете воссоздать genes.txt
, используя следующие команды, которые вы должны запустить из командной строки
curl -O ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/gene_info.gz
gzip -cd gene_info.gz | awk -Ft '$1==9606{print $3 "\t" $5 "\t" $9}' > genes.txt
следует предупредить, что gene_info.gz - 101MBish.