在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左右。
如果这是相关的,我还应该注意到很多行都缺少字段。
谢谢你的帮忙!
发布于 2012-07-04 21:15:33
使用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值:问题发生在这些行中。
正如Justin提到的,一个常见的问题是不匹配的引号。打开你的CSV文件,看看字符串是如何被引用的。然后调用read.csv,指定quote参数。
发布于 2012-07-04 22:40:53
我的猜测是您嵌入了无与伦比的"。所以你的一些行实际上比它们应有的长度要长得多。我会做一些像apply(vecs, 2, function(x), max(nchar(as.character(x)))这样的检查。
https://stackoverflow.com/questions/11320372
复制相似问题