2012-11-28 58 views
1

我有我試圖導入20萬線的文件,但我得到一個錯誤:忽略在循環中的錯誤,名dataframes用循環

Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : 
    line 39194 did not have 10 elements 

尋找與less -N該行(只需鍵入「39000e」跳到你想要的行)我看不出有什麼不同,所以我用split -l 30000 optimized_bail_1127.csv將它分成塊,所以我可以嘗試導入較小的塊並附加它們(或檢查它們)。

split產生一堆名爲的「Xaa」,「XAB」的文件,... XAG等等。所以我想要做的事,如:

files <- dir(pattern="xa[a-g]") 
for(f in files) { 
    print (f) 
    f <- read.table(f,sep = '|') 
} 

以獲得每個子文件表。我也喜歡它跳過錯誤(打印它們,但繼續),所以我至少可以看到有多少這些我可以乾淨地導入。

+1

這樣的錯誤在讀取文件通常來自兩個來源:R解釋爲(a)評論(「#」)或(b)引述(「」,「'」)的特殊字符。其中一個出現在您的文件?如果是這樣,你可能想看看'scan()'的'quote'和'comment.char'參數。 –

回答

1

爲了看到錯誤消息,但保持在一個循環中去,你可以做try():使用

FSU <- function() { 
     for(i in 1:100){ 
      if(i == 23) lm(NA~NA) 
      } 
     print("you made it!") 
     } 

> FSU() 
Error in terms.formula(formula, data = data) : 
    invalid term in model formula 

try()

DontFSU <- function() { 
     for(i in 1:100){ 
      if(i == 23) try(lm(NA~NA)) 
      } 
     print("you made it!") 
     } 

> DontFSU() 
Error in terms.formula(formula, data = data) : 
    invalid term in model formula 
[1] "you made it!" 
1

嘗試fill=Tread.csv(...,sep='|')

+0

解決錯誤本身? – Amanda

+0

呵呵。這似乎工作(所以我不打錯誤),但我仍然好奇如何使我的循環工作。 – Amanda