在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左右。
如果相关,我还应该注意到很多行都缺少字段。
感谢您的帮助!
答案 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)))
之类的事情来检查。