Ali*_*Ali 17 file-io r read.table read.csv
我在几种情况下看到,虽然read.table()无法读取制表符分隔文件(例如微阵列的注释表),但返回以下错误:
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
line xxx did not have yyy elements
Run Code Online (Sandbox Code Playgroud)
read.csv()在同一个文件上完美运行,没有错误.我觉得速度read.csv()也高于read.table().
甚至更多:read.table()读取我的文件非常疯狂.它在读取第100行时会出现此错误,但是当我在相同文件的头部之后复制并粘贴第90行到第110行时,它仍然会出现第100 + 21行的错误(在开头复制新行).如果该行存在任何问题,为什么在开头读取粘贴的行时不报告该错误?我确认read.csv()读取相同的文件没有错误.
你知道为什么read.table()无法读取相同的文件read.csv()吗?read.table()在任何情况下也有任何理由吗?
Ben*_*ker 31
read.csv是一个相当薄的包装read.table; 如果你不能通过read.csv提供正确的参数来完全复制行为,我会感到非常惊讶read.table.但是,其中一些参数(例如处理引号或注释字符的方式)可能会改变函数的速度和行为.
特别是,这是完整的定义read.csv:
function (file, header = TRUE, sep = ",", quote = "\"", dec = ".",
fill = TRUE, comment.char = "", ...) {
read.table(file = file, header = header, sep = sep, quote = quote,
dec = dec, fill = fill, comment.char = comment.char, ...)
}
Run Code Online (Sandbox Code Playgroud)
所以说它只是read.table一组特定的选项.
正如@Chase在下面的评论中所述,帮助页面的read.table()说法同样如下Details:
read.csv和read.csv2与read.table相同,但默认值除外.它们用于读取"逗号分隔值"文件('.csv')或(read.csv2)在使用逗号作为小数点和分号作为字段分隔符的国家/地区中使用的变体.