[R转换列NA值 - 为什么?
我想在制表符分隔的文件与一列指示由“罗马”枚举表示的类来读取(每个文件包含任一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
总是在类似的文件上为我工作。
你可能已经发现了,如果你已经显现类型:
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
如果您的文件中不仅包含我也II和IV,它的工作原理仍然:
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
我也会这么想,但如果在“班级”列中有其他值,那么不应该将该列自动检测为字符或因子? – A5C1D2H2I1M1N2O1R2T1 2014-09-04 07:54:20
@AnandaMahto是的,的确,那么它的工作原理,如图我的更新。 – martin 2014-09-04 07:57:06
没想到那个!我正在查看是否可能存在隐藏在'\ ti'中的转义序列。非常感谢!但有一个问题仍然存在:如果我有一个我想用于计算的数字第四列,该怎么办?它现在也将是一个角色。在readin之后我是否需要转换它,还是有更简单的解决方案? – aldorado 2014-09-04 07:57:51
我编辑的问题,使这一点更清晰。我有不同的文件,每个文件仅包含任一'i','ìi'...它们被加载在R和然后被组合。 – aldorado 2014-09-04 08:04:43