【发布时间】:2017-02-24 23:50:33
【问题描述】:
我在几种情况下看到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.table()的帮助页面,了解内存使用情况,了解为什么它对于大文件可能看起来很慢。 -
如果没有可重现的示例,我们无法回答您的(更新的)问题。最常见的阅读问题是(1)未检测到的注释字符,(2)不匹配的引号,(3)
fill=TRUE时文件前 5 行之后每行字段数的变化。因为read.csv和read.table对comment、quote和fill有不同的默认值,所以这些都可能是问题所在。 -
PS 有 8 种组合
comment/quote/fill:您可以尝试所有这些组合,看看结果有何不同——这可能会引导您找到答案。count.fields()也便于诊断。 -
我遇到过的每一位 R 专家的集体经验使我为此类问题开发了先验,该问题基本上由 Dirac Delta 函数组成,在“有一条奇怪的线/文件中的字符”,
read.table或read.csv没有问题。 -
我不知道如何在 SO 上共享文件
标签: r file-io read.table read.csv