下面有一个虚拟脚本:
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
,然后在处理完所有有效数据时返回错误消息。
感谢。
答案 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
。