2015-06-05 458 views
0

我有一个1000行的数据帧。我想要循环的代码非常简单 - 我只想将列4中的所有值都大写。我想这样做,如果任何行中有错误,我希望它跳过该行并继续行的其余部分。R:For循环跳过如果错误/ tryCatch

我写这段代码:

for(i in 1:1000) 
{ 
    tryCatch(toupper(Total_Data_2[i,4]), error = function(e) next) 
} 

但是,我得到的错误:Error in value[[3L]](cond) : no loop for break/next, jumping to top level

有人可以帮助我?我可以做一个tryCatch或某种如果是错误的。

在此先感谢!

+0

你期待什么错误?我只需要'Total_Data_2 [,4] = toupper(Total_Data_2 [,4])',不需要循环。 – Gregor

+0

我在一些行中有一些特殊字符。这会导致错误。 – user4918087

+0

那些特殊字符是什么? – user227710

回答

3

虽然我不认为这一定是最好的解决方案,它回答你的问题直接(简化重复性):

for(i in 1:10) { 
    res <- try(if(i %% 2) stop("argh")) 
    if(inherits(res, "try-error")) next 
    cat(i, "\n") 
} 

只需使用try代替tryCatch B/C这是一个有点简单, tryCatch功能不是必需的。真正为你的目的,你可以:

for(i in 1:10) try(my_val[i] <- my_fun(my_val[i])) 

因为你不需要做任何事情。如果失败,循环将继续愉快。

所有这一切说,我不得不说我有点困惑于你的错误和无法以矢量化的方式做到这一点。