R-分配;不适用;到对象';未找到';函数内部;可能吗?

R-分配;不适用;到对象';未找到';函数内部;可能吗?,r,R,我通过R中的几个不同函数运行一个数据集(在示例中为“数据对象”),并在最后连接数值结果。见: a<-median((function1(x=1,dataobject,reps=500)),na.rm=TRUE) b<-median((function2(x=1,dataobject,reps=500)),na.rm=TRUE) c<-median((function3(x=1,dataobject,reps=500)),na.rm=TRUE) d<-median((fu

我通过R中的几个不同函数运行一个数据集(在示例中为“数据对象”),并在最后连接数值结果。见:

a<-median((function1(x=1,dataobject,reps=500)),na.rm=TRUE)
b<-median((function2(x=1,dataobject,reps=500)),na.rm=TRUE)
c<-median((function3(x=1,dataobject,reps=500)),na.rm=TRUE)

d<-median((function4(x=1,dataobject,reps=500)),na.rm=TRUE)
e<-median((function5(x=1,dataobject,reps=500)),na.rm=TRUE)
f<-median((function6(x=1,dataobject,reps=500)),na.rm=TRUE)

c(a,b,c,d,e,f)
这是一个简单的问题,但我找不到任何其他被问到的例子。我最初试图设置一个函数来运行所有内容并输出连接的结果,但遇到了相同的问题(当一个函数无法运行时,整个包装函数也会停止,我不知道如何告诉R跳过它无法计算的部分)


非常感谢您的任何想法!谢谢

我能想到几个解决方案

  • 初始化所有计划使用的变量,使其具有所需的默认值

    a=b=c=d=e=NA

  • 然后运行代码。如果出现错误,变量中将包含NA

  • 使用“tryCatch”。如果你不知道这是什么,我建议你继续读下去。它允许您处理错误
  • 下面是代码中的一个示例

    tryCatch({
      a<-median((function1(x=1,dataobject,reps=500)),na.rm=TRUE)
    },
    error = function(err){
      print("Error in evaluating a. Initializing it to NA")
      a <<- NA
    })
    
    tryCatch({
    
    这太棒了!初始化变量和使用tryCatch的简单修复程序让我可以将所有内容放入一个函数中并运行它。谢谢你介绍我使用tryCatch,非常感谢你的帮助!我想投票,但我没有足够的声誉。当我这么做的时候,我会回来偿还我的债务!@Fishy接受答案,如果可以的话对你很有用。(答案旁边的勾号)
    tryCatch({
      a<-median((function1(x=1,dataobject,reps=500)),na.rm=TRUE)
    },
    error = function(err){
      print("Error in evaluating a. Initializing it to NA")
      a <<- NA
    })