R的read.csv()省略了行

时间:2012-07-03 22:59:43

标签: r read.csv

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

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

使用count.fields通常可以轻松解决此类问题,read.csv会告诉您,如果调用(n_fields <- count.fields("feature_vectors.txt")) ,结果数据框将包含多少列。

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

如果并非所有n_fields的值都相同,则表示您有问题。

n_fields

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

正如贾斯汀所说,一个常见的问题是无与伦比的报价。打开CSV文件,找出字符串的引用方式。然后调用quote,指定{{1}}参数。

答案 1 :(得分:3)

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