2012-10-07 34 views
5

E-tabloya meta verilerimi yorumlar olarak eklemek istiyorum ve R bunları sonradan reddeder.read.table ve yorumlar in R

My verileri (sütun sayısını belirlemek için scan tarafından kullanılan çok daha uzun olduğunu istisna. İlk açıklama aslında iyi ilk 5 satır dışında görünür) biçiminde

v1,v2,v3, 
1,5,7, 
4,2,1,#possible error, 

vardır (count.fields bu konuda ve) düşünür

read.table("data.name",header=TRUE,sep=",",stringsAsFactors=FALSE,comment.char="#") 

Ama read.table:

ben çalışıyorum Aslında benden daha fazla alanım var. Veri çerçevem ​​'X' olarak adlandırılan boş bir sütunla biter. Bunun nedeni e-tablo programımın her satırın sonuna virgül eklediğidir (yukarıdaki örnekte olduğu gibi). flush=TRUE kullanma

bile (yardım dosyasına göre) olsa etkisi yoktur "[...] sonra son alan yorum koyarak veriyor [...]"

ya colClasses=c(rep(NA,3),NULL) hiçbir etkisi vardır kullanma.

Sütunu daha sonra silebilirim, ancak bunun genel bir uygulama olduğu anlaşılınca, düzgün bir şekilde nasıl yapılacağını öğrenmek istiyorum.

sayesinde doc itibaren

Andrew

cevap

4

Sorununuz elektronik tabloda (I Excel kullanıyorum) için read.table ilgisiz() ama değil. Read.table için varsayılan davranış, bir yorumun başlangıcı olarak # işlemek ve aşağıdakileri görmezden gelmektir. Hata almanızın sebebi, veri hatlarınızın sonunda takip eden bir virgül olmasıdır. Bu, daha fazla verinin takip edilmesi gerektiğini okumayı anlatır. Yorum varsayılan olarak göz ardı edilir ve dördüncü sütun oluşturulur ve etiketli X. kolaylıkla işten geçtikten sonra bu sütunu silmek veya @flodel bahseder yöntemini kullanın veya kaldırabilirsiniz olabilir

> read.table(text="v1, v2, v3, 
+ 1,5,7, 
+ 4,2,1,#possible error,", sep=",", header=TRUE) 
    v1 v2 v3 X 
1 1 5 7 NA 
2 4 2 1 NA 

: Orijinal örnek okuma dosyayı R'ye okumadan önce virgülle sonlanıyor.Excel'de, dördüncü sütunda yorum göründüğü ve Excel'in bunu bir yorum olarak tanıyamadığı için, bir dosyayı csv (virgülle ayrılmış değişkenler) olarak kaydettiğinizde, sondaki virgül eklenir.

> read.table(text="v1 v2 v3 
+ 1 5 7 
+ 4 2 1#possible error", header=TRUE) 
    v1 v2 v3 
1 1 5 7 
2 4 2 1 
: Eğer dosyayı kaydederseniz boşlukla ayrılmış, uzakta gider sorunu (boşluk beri Eylül = argüman kaldırmak varsayılan ayırıcı olan)
5

(?read.table):

colClasses karakteri. Sütunlar için üstlenilecek sınıfların bir vektörü. Gerektiğinde geri dönüştürülür veya karakter vektörü isimlendirilmemiş ise, belirtilmemiş değerler NA olarak alınır.

Olası değerler şunlardır: NA (type.convert kullanıldığında varsayılan), "NULL" (sütun atlandığında), atomik vektör sınıflarından biri (mantıksal, tamsayı, sayısal, karmaşık, karakter, işlenmemiş) veya "factor", "Date" veya "POSIXct". Aksi takdirde, "karakter" ten belirtilen resmi sınıfa dönüşüm için bir yöntem (paket yöntemlerinden) olmalıdır.

Not o "NULL" değil NULL kullanmayı söylüyor. Nitekim, bu şekilde beklenen işleri: açıklama karakteri ve veri sütun sayısı ile ilgili

con <- textConnection(" 
v1,v2,v3, 
1,5,7, 
4,2,1,#possible error, 
") 

read.table(con, header = TRUE, sep = ",", 
      stringsAsFactors = FALSE, comment.char = "#", 
      colClasses = c(rep(NA, 3), "NULL")) 
# v1 v2 v3 
# 1 1 5 7 
# 2 4 2 1