4

在 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 左右。

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

谢谢你的帮助!

4

2 回答 2

4

这类问题通常很容易解决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参数。

于 2012-07-04T13:15:32.690 回答
3

我的猜测是你嵌入了 unmatched "。所以你的一些行实际上比它们应该的长得多。我会做一些apply(vecs, 2, function(x), max(nchar(as.character(x)))检查。

于 2012-07-04T14:40:52.833 回答