read.csv与read.table
我在几个案例中看到,虽然read.csv与read.table,r,file-io,read.table,read.csv,R,File Io,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 read.csv()可以在同一个文件上完美地工作,没有错误。我认为read.csv()的速度也高于read.table() 更重要的是:read.tabl
read.table()
无法读取以制表符分隔的文件(例如微阵列的注释表),但返回以下错误:
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
line xxx did not have yyy elements
read.csv()
可以在同一个文件上完美地工作,没有错误。我认为read.csv()
的速度也高于read.table()
更重要的是:read.table()
正在疯狂地阅读我的文件。读取第100行时会出现此错误,但当我在同一文件头之后复制并粘贴第90行到第110行时,仍会出现第100+21行错误(在开头复制新行)。如果该行有任何问题,为什么在开始读取粘贴的行时不报告该错误?我确认read.csv()
读取同一文件时没有错误
你知道为什么
read.table()
无法读取与read.csv()
相同的文件吗?还有什么理由在任何情况下使用read.table()
?read.csv
是read.table
的一个相当薄的包装;如果您不能通过向read.table
提供正确的参数来准确复制read.csv
的行为,我会非常惊讶。但是,其中一些参数(例如引号或注释字符的处理方式)很可能会改变函数的速度和行为
特别是,这是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, ...)
}
如前所述,它只是带有一组特定选项的read.table
正如@Chase在下面的评论中所述,read.table()
的帮助页面在详细信息下所说的一样:
除默认值外,read.csv和read.csv2与read.table相同。它们用于读取“逗号分隔值”文件(“.csv”)或(read.csv2)在使用逗号作为小数点、分号作为字段分隔符的国家/地区使用的变体
不要使用read.table
读取制表符分隔的文件,请使用read.delim
。(它只是read.table
的一个薄薄的包装,但它将选项设置为适当的值)read\u table()
有时会在tabsep
'ed文件上失败,设置sep='\s+'
可能有助于假设表中的项没有空间很好的答案-我只需添加read.table()的帮助页面)
表示,除了默认值外,read.csv和read.csv2与read.table下的详细信息相同。它们用于读取“逗号分隔值”文件(“.csv”)或(read.csv2)在使用逗号作为小数点、分号作为字段分隔符的国家/地区使用的变体。
。因此,对于OP-yes,当您的数据与read.csv
的默认值不匹配时,您可能需要read.table
,也可以在内存使用情况下阅读read.table()
的帮助页面,了解为什么大型文件的速度可能较慢。如果没有可复制的示例,我们无法回答您(更新的)问题。最常见的读取问题是:(1)未检测到的注释字符,(2)不匹配的引号,(3)当fill=TRUE
时,文件前5行后每行字段数的变化。因为read.csv
和read.table
对于comment
、quote
和fill
有不同的默认值,其中任何一个都可能是问题所在。PS有8种组合的注释
/引用
/填充
:您可以对所有这些组合进行实验,看看结果如何不同——这可能会引导您找到答案count.fields()
对于诊断也很方便。我遇到的每一位R专家的集体经验都让我开发了一个Previor,用于解决此类问题,它基本上由“文件中有一个奇怪的行/字符”上的无限质量函数组成,read.table
或read.csv
没有问题。我不知道如何在上面共享文件