忽略循环中的错误,使用循环命名数据帧

时间:2012-11-28 17:05:05

标签: r for-loop error-handling

我有一个200,000行文件,我正在尝试导入,但是我收到错误:

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 = '|')
}

获取每个子文件的表。我也喜欢它只是跳过错误(打印它们,但继续),所以我至少可以看到有多少这些我可以干净地导入。

2 个答案:

答案 0 :(得分:1)

尝试fill=Tread.csv(...,sep='|')

答案 1 :(得分: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!"