Mam plik o nazwie genes.txt
, który chciałbym stać się data.frame. Jest tam wiele linii, każda linia ma trzy, zakładka ograniczona pola:R: Dlaczego plik read.table przestaje czytać plik?
mike$ wc -l genes.txt
42476 genes.txt
Chciałbym odczytać ten plik w data.frame w R. używam read.table polecenia, na przykład:
genes = read.table(
genes_file,
sep="\t",
na.strings="-",
fill=TRUE,
col.names=c("GeneSymbol","synonyms","description")
)
który wydaje się działać dobrze, gdzie genes_file
wskazuje na genes.txt
. Jednak liczba linii w moim data.frame jest znacznie mniejsza niż liczba wierszy w moim pliku tekstowego:
> nrow(genes)
[1] 27896
i rzeczy mogę znaleźć w pliku tekstowego:
mike$ grep "SELL" genes.txt
SELL CD62L|LAM1|LECAM1|LEU8|LNHR|LSEL|LYAM1|PLNHR|TQ1 selectin L
don” t wydają się być w data.frame
> grep("SELL",genes$GeneSymbol)
integer(0)
okazuje się, że
genes = read.delim(
genes_file,
header=FALSE,
na.strings="-",
fill=TRUE,
col.names=c("GeneSymbol","synonyms","description"),
)
działa dobrze. Dlaczego read.delim działa, gdy read.table nie?
Jeśli to użycia, można odtworzyć genes.txt
stosując następujące polecenia, które należy uruchomić z wiersza poleceń
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
ostrzegam jednak, że gene_info.gz jest 101MBish.
Czy jest przypadkiem coś specjalnego w linii 27897, które może przerwać import? Nie mogę teraz pobrać pliku, spróbuję później, jeśli jeszcze nie otrzymałeś odpowiedzi. – nico
Nie, nie mogę zobaczyć! Okazuje się, że read.delim działa dobrze, więc jest to nieco mniej irytujące niż było. Bardzo mocno zredagowałem to pytanie (przepraszam 11 osób, które przeczytały go w ciągu pierwszych 4 minut od jego wydania), aby ponownie sformułować pytanie, dlaczego read.delim działa, gdy read.table nie działa? –
Nie patrzyłem na plik, ale cytowanie i komentarze są dwoma popularnymi sposobami na przełamanie rzeczy. Na przykład read.table traktuje znak "#" jako znak komentarza, który jest nieodpowiedni dla wielu plików. –