2011-12-19 42 views
2

我正在嘗試使用read.csv()讀取R(在linux下)的CSV文件。函數完成後,我發現在R中讀取的行數少於CSV文件中的行數(由wc -l獲取)。而且,每次我讀取特定的CSV文件時,總是會跳過相同的行。我檢查了CSV文件中的格式錯誤,但一切看起來不錯。R編程:read.csv()意外跳過線

但是,如果我將被跳過的行提取到另一個CSV文件中,則R能夠從該文件中讀取非常多的行。

我無法找到任何地方我的問題可能是什麼。任何幫助不勝感激。

+2

也許你可以發佈一些數據讓我們重現這個問題? –

+0

這裏是我想要閱讀的CSV文件的鏈接 - http://dl.dropbox.com/u/6967747/bugs.csv –

+1

使用'quote =「」';見'?read.csv' –

回答

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(「#」,哈希標誌)它們是R數據說法中的註釋字符。

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

所以....在read.table使用這些設置,你應該是「好走」。

+0

'count.fields'的很棒的演示。 –

+0

非常棒!感謝您的幫助! –