我有一个csv,我在导入时定义类。有些列是整数类。我遇到的问题是,如果某些用户在其中一列中写入“3”而不是“3”,则整个功能将停止工作。
我希望他做的是在导入时将任何文本转换为NA。我已经看到你可以使用na.strings = ...,但这适用于所有列,对吧?我只想从一列中排除字符,而不是从整个csv中排除。
是否有一个简单的解决方案,或者我是否必须手动检查每列中的这些值并将它们转换为NA?
编辑:其他信息: 这就是我的代码:
df <- read.csv(text=capture.output(write.csv(d.xxx,row.names=FALSE)),
colClasses=d.yyy,
header = TRUE)
,其中
d.xxx is a data frame containing the values and
d.yyy is a list containing "integer","character",etc. in the correct order
EDIT2:这是我得到的错误:
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
scan() expected 'a real', got '"2"'
答案 0 :(得分:1)
只需将列导入为字符串,然后在data.frame中的列上运行as.numeric()
。这将返回实际数字的数值向量和字符串元素的NA。