R编程:read.csv()意外地跳过了行

时间:2011-12-19 23:31:18

标签: r csv

我正在尝试使用read.csv()在R(在linux下)读取CSV文件。函数完成后,我发现R中读取的行数小于CSV文件中的行数(由wc -l获得)。此外,每次我读取特定的CSV文件时,总是会跳过相同的行。我检查了CSV文件中的格式错误,但一切看起来都不错。

但是如果我将跳过的行提取到另一个CSV文件中,那么R就可以读取该文件中的非常行。

我无法找到我的问题所在的任何地方。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:11)

以下是使用count.fields确定查看位置并可能应用修补程序的示例。你有一个适度数量的行,23'字段'宽度:

> table(count.fields("~/Downloads/bugs.csv", quote="", sep=","))
     2     23     30 
   502     10 136532 
> table(count.fields("~/Downloads/bugs.csv", sep=","))
# Just wanted to see if removing quote-recognition would help.... It didn't.
     2      4     10     12     20     22     23     25     28     30 
 11308     24     20     33    642    251     10      2    170 124584 
> which(count.fields("~/Downloads/bugs.csv", quote="", sep=",") == 23)
 [1] 104843 125158 127876 129734 130988 131456 132515 133048 136764
[10] 136765

我看了23:

txt <-readLines("~/Downloads/bugs.csv")[
                 which(count.fields("~/Downloads/bugs.csv", quote="", sep=",") == 23)]

他们有octothorpes(&#34;#&#34;,哈希标志),这是R数据用语中的注释字符。

> table(count.fields("~/Downloads/bugs.csv", quote="", sep=",", comment.char=""))
    30 
137044 

所以....在read.table中使用这些设置,你应该&#34;好的去#34;。