【问题标题】:R's read.csv() omitting rowsR 的 read.csv() 省略行
【发布时间】:2012-07-04 10:38:25
【问题描述】:

在 R 中,我试图读取大约 42,900 行的基本 CSV 文件(由 Unix 的 wc -l 确认)。相关代码是

vecs <- read.csv("feature_vectors.txt", header=FALSE, nrows=50000)

其中 nrows 稍微高估了,因为为什么不呢。然而,

>> dim(vecs)
[1] 16853     5

表明生成的数据框有大约 17,000 行。这是内存问题吗?每行由一个~30 个字符的哈希码、一个~30 个字符串和3 个整数组成,所以文件的总大小只有4MB 左右。

如果相关,我还应该注意很多行都缺少字段。

感谢您的帮助!

【问题讨论】:

  • 您是否查看过导入的行是否被正确导入?
  • 我猜你嵌入了无与伦比的"。因此,您的某些行实际上比应有的长得多。我会做类似apply(vecs, 2, function(x), max(nchar(as.character(x))) 的事情来检查。
  • 是的!贾斯汀明白了。添加quote="" 解决了这个问题。
  • @Justin,请将此作为答案,以便卡尔达诺可以接受它作为他问题的正确解决方案。 :)
  • 为了记录,如果fill=TRUEafter 行前五个的字段比前五个...这在帮助文件中被斜指...

标签: r read.csv


【解决方案1】:

这类问题通常使用count.fields 很容易解决,它会告诉您调用read.csv 时生成的数据框会有多少列。

(n_fields <- count.fields("feature_vectors.txt"))

如果不是所有n_fields的值都相同,那你就有问题了。

if(any(diff(n_fields)))
{
  warning("There's a problem with the file")
}

在这种情况下,请查看与您预期不同的 n_fields 值:问题出现在这些行中。

正如贾斯汀所说,一个常见的问题是引号不匹配。打开你的 CSV 文件,看看那里的字符串是如何被引用的。然后调用read.csv,指定quote 参数。

【讨论】:

    【解决方案2】:

    我的猜测是你嵌入了无与伦比的"。因此,您的某些行实际上比应有的长得多。我会做类似apply(vecs, 2, function(x), max(nchar(as.character(x))) 的事情来检查。

    【讨论】:

      猜你喜欢
      • 2016-02-28
      • 1970-01-01
      • 2020-05-25
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      • 2020-05-23
      相关资源
      最近更新 更多