我有一个包含 ~200 列和 ~170K 行的 csv 文件。数据已经过广泛的修饰,我知道它格式正确。当 read.table 完成时,我看到大约一半的行已被导入。没有警告或错误。我设置了选项(警告 = 2)。我正在使用 64 位最新版本,并将内存限制增加到 10gig。在这里挠头……不知道如何继续调试。
编辑
当我说一半文件时,我不是指前半部分。最后一次观察读取是在文件的末尾……所以它看起来是随机的。
我有一个包含 ~200 列和 ~170K 行的 csv 文件。数据已经过广泛的修饰,我知道它格式正确。当 read.table 完成时,我看到大约一半的行已被导入。没有警告或错误。我设置了选项(警告 = 2)。我正在使用 64 位最新版本,并将内存限制增加到 10gig。在这里挠头……不知道如何继续调试。
编辑
当我说一半文件时,我不是指前半部分。最后一次观察读取是在文件的末尾……所以它看起来是随机的。
您可能在文件中有注释字符 (#)(尝试comment.char = ""
在 read.table 中设置选项)。此外,检查报价选项是否设置正确。
在我如何处理它是一次读取一定数量的行然后在事后合并之前,我遇到了这个问题。
df1 <- read.csv(..., nrows=85000)
df2 <- read.csv(..., skip=84999, nrows=85000)
colnames(df1) <- colnames(df2)
df <- rbind(df1,df2)
rm(df1,df2)
在读取带有“|”的大型 txt 文件时,我遇到了类似的问题 分隔器。txt 文件中散布着一些包含引号 (") 的文本块,这会导致 read.xxx 函数在先前的记录处停止而不会引发错误。请注意,提到的文本块没有用双引号括起来;相反,它们只是在这里和那里包含一个双引号字符(“),它把它绊倒了。
我对 txt 文件进行了全局搜索和替换,将双引号 (") 替换为单引号 ('),解决了问题(然后读取所有行而不中止)。