R: read.table和缺失值处理

5

当我在R中以tab分隔的格式加载我的数据文件时,出现以下错误消息:

Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  : line 3 did not have 5 elements

这里是我的数据:
KEY ID      code1   code2   name
1   sadsa   32423   344     ffsadsa
2   vdffsfs 21344   234     fsadfgg
3   3e4dsa  21321   #N/A    #N/A
4   dcxzc   23421   #N/A    #N/A
5   xzzcc   21223   124     erfsacf
6   sdas    21321   464     fsadfsa
7   assdad  32132   455     fsadfda

我可以看出错误是由于数据中的"#N/A"值引起的。我尝试了read.table选项,如na.strings或comment.char = "#",但仍然无法解决。

在R中加载数据时有没有办法保留实际文本(#N/A),或者至少将其替换为N/A?


1
read.table 中,您可以指定 na.strings = "#NA" - akrun
是的 @akrun。我尝试过这个->data = read.table("raw.dat",header=TRUE,sep="\t",stringsAsFactors=FALSE,quote = "",row.names = NULL,na.strings = "#NA")。但仍然出现错误信息“Error in scan(file = file,what = what,sep = sep,quote = quote,dec = dec,:line 3 did not have 5 elements”。 - CHONG
1
如果出现 #N/A,则使用该特定值。我之前留言时遗漏了 / 符号。 - akrun
嗨@akrun。已更改为以下内容-> data = read.table("raw.dat", header=TRUE, sep="\t", stringsAsFactors=FALSE, quote = "", row.names = NULL, na.strings = "#N/A")。仍然是相同的错误信息。 - CHONG
3
你可能还需要设置参数 comment.char = "",以防止 "#" 被解释为注释。 - Marius
1个回答

10
您可以尝试使用read.table函数,并设置fill=TRUE参数。
read.table(file =file, sep = sep, fill=TRUE)

如果这不起作用,我建议尝试使用readLines函数而不是read.table。
readLines(...)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接