绕过R中循环内的错误

时间:2011-09-01 08:40:48

标签: r error-handling

下面有一个虚拟脚本:

a <- 1
b <- 2
c <- 3
e <- 5

list <- letters[1:5]

for (loop in (1:length(list)))
    {print(paste(list[loop],get(list[loop]),sep="-"))
    }

> source('~/.active-rstudio-document')
[1] "a-1"
[1] "b-2"
[1] "c-3"
Error in get(list[loop]) : object 'd' not found

目前我遇到一个问题,即由于d不存在,因此会弹出一条错误消息并阻止e的处理。

我想知道R是否有某种“错误处理”,即绕过d引起的错误,继续处理e,然后在处理完所有有效数据时返回错误消息。

感谢。

2 个答案:

答案 0 :(得分:5)

使用exists检查变量是否存在:

for (loop in (1:length(list))){
  if(exists(list[loop])){
    print(
        paste(list[loop], get(list[loop]), sep="-"))
  }
}

[1] "a-1"
[1] "b-2"
[1] "c-3"
[1] "e-5"

更一般地说,R具有用于捕获和处理错误的复杂机制。有关更多详细信息,请参阅?tryCatch及其简化的包装器?try

答案 1 :(得分:2)

是的,与大多数开发语言一样,有这样一种机制。检查?try