2010-06-10 14 views
11

Bir data.frame olmak istediğim genes.txt adlı bir dosyam var.R: Neden read.table bir dosyayı okumayı bırakıyor?

mike$ wc -l genes.txt 
    42476 genes.txt 

ben böyle komut read.table kullanmak R. bir data.frame içine bu dosyayı okumak istiyorum: Bu satırları bir çok var, her satırı üç, sekme ayrılmış alanları vardır: iyi iş gibi görünüyor

genes = read.table(
    genes_file, 
    sep="\t", 
    na.strings="-", 
    fill=TRUE, 
    col.names=c("GeneSymbol","synonyms","description") 
) 

, nerede genes.txt de genes_file puan. '

mike$ grep "SELL" genes.txt 
SELL CD62L|LAM1|LECAM1|LEU8|LNHR|LSEL|LYAM1|PLNHR|TQ1 selectin L 

don:

> nrow(genes) 
[1] 27896 

ve işler ben metin dosyasında bulabilirsiniz: Ancak, benim data.frame çizgi sayısı benim metin dosyasında hatlarının sayısından önemli ölçüde daha azdır t

> grep("SELL",genes$GeneSymbol) 
integer(0) 

o çıkıyor data.frame görünmektedir

genes = read.delim(
    genes_file, 
    header=FALSE, 
    na.strings="-", 
    fill=TRUE, 
    col.names=c("GeneSymbol","synonyms","description"), 
) 

sadece iyi çalışıyor. Read.delim neden read.table kullanılmıyor? bu kullanım ise

, size

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 

uyarılmalıdır bir komut satırından çalıştırmanız gerekir aşağıdaki komutları kullanarak genes.txt yeniden oluşturabilirsiniz, ancak, bu gene_info.gz 101MBish olduğunu.

+0

27897 numaralı hattın ithalatını kırabilecek özel bir şey var mı? Şu anda dosyayı indiremiyorum, henüz bir cevap almadıysanız daha sonra deneyeceğim. – nico

+0

Göremediğim gibi değil! Bu read.delim iyi çalışıyor, bu yüzden bu biraz daha az rahatsız edici çıkıyor. Soruyu oldukça ağır bir şekilde düzenledim (okuyucunun ilk 4 dakikasında okuyan 11 kişiye özür dilerim). –

+2

Dosyaya bakmadım ama alıntılar ve yorumlar, işlerin kırılmasının iki yaygın yolu. Örneğin, read.table '#' birçok dosya için uygun olmayan bir yorum karakteri olarak davranır. –

cevap

15

read.table ile varsayılan alıntı karakterlerinden biri tek alıntıdır. Açıklama alanınızda bazı benzersiz tek tırnakların olduğunu tahmin ediyorum ve tek tırnaklar arasındaki tüm veriler tek bir girişte bir araya getiriliyor.

read.delim ile defualt alıntı karakteri çift tırnak ve bu bir problem değildir.

Alıntı karakterinizi belirtin ve hepsi ayarlanmış olmalıdır.

> genes<-read.table("genes.txt",sep="\t",quote="\"",na.strings="-",fill=TRUE, col.names=c("GeneSymbol","synonyms","description")) 
> nrow(genes) 
[1] 42476 
+0

teşekkürler! Son girişimin çok büyük olduğunu fark etmeliydim. Öğrenme eğrisinin zevkleri ... –

+0

Öğrenme Eğrisi Kilisesi'ne katılın. :) –

+0

Başka bir seçenek (kullandım) quote = "" değerini ayarlamak ve alıntıları kaldırmaktır. Doldurma = TRUE kullanırsanız, bu soruna daha fazla sahip olacağınızı unutmayın * sessizce *. –

İlgili konular