2014-09-04 80 views
2

我想在製表符分隔的文件與一列指示由「羅馬」枚舉表示的類來讀取(每個文件包含任一I,II,III或IV在第二列)。但是,對於僅包含「i」的文件,此列將轉換爲NA值。我可以重現這個錯誤有一個小的測試文件看起來像這樣:[R轉換列NA值 - 爲什麼?

animal class info 
dog i a 
cat i a 
rabbit i b 

當我讀入R:

> d<-read.delim("test_roman.csv", sep="\t") 
> d 
    animal class info 
1 dog NA a 
2 cat NA a 
3 rabbit NA b 

缺少什麼我在這裏? read.delim總是在類似的文件上爲我工作。

+0

我編輯的問題,使這一點更清晰。我有不同的文件,每個文件僅包含任一'i','ìi'...它們被加載在R和然後被組合。 – aldorado 2014-09-04 08:04:43

回答

5

你可能已經發現了,如果你已經顯現類型:

typeof(d$class) 
[1] "complex" 

你顯然不希望有一個複數,所以我們執行「人物」類:

read.table("test_roman.csv", sep="\t", fill=T, colClasses="character", header=T) 
# animal class info 
# dog  i  a 
# cat  i  a 
# rabbit i  b 

如果您的文件中不僅包含IIIV,它的工作原理仍然:

read.delim("test_roman2.csv", sep="\t") 
# animal class info 
#1  dog  i a 
#2  cat  i a 
#3 rabbit  i b 
#4 rabbit  iv b 
#5 rabbit  ii b 
+0

我也會這麼想,但如果在「班級」列中有其他值,那麼不應該將該列自動檢測爲字符或因子? – A5C1D2H2I1M1N2O1R2T1 2014-09-04 07:54:20

+0

@AnandaMahto是的,的確,那麼它的工作原理,如圖我的更新。 – martin 2014-09-04 07:57:06

+0

沒想到那個!我正在查看是否可能存在隱藏在'\ ti'中的轉義序列。非常感謝!但有一個問題仍然存在:如果我有一個我想用於計算的數字第四列,該怎麼辦?它現在也將是一個角色。在readin之後我是否需要轉換它,還是有更簡單的解決方案? – aldorado 2014-09-04 07:57:51