R - 为函数内部未找到的对象分配“NA”;可能吗?

时间:2015-04-25 06:19:18

标签: r

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

location /{path}/ {    
        index index.php;

        access_log /{path}/access.log;
        error_log /{path}/error.log;

        location ~\.php {
            try_files $uri = 404;
            fastcgi_pass php5-fpm-sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }   

        location ~ { 
            try_files $uri $uri/ /{path}/index.php?path=$uri;
        }

    }   

但是,某些功能无法使用我正在使用的数据集运行,因此它们会返回错误;例如“function3”无法运行,所以当它到达连接步骤时,它会给出“错误:未找到对象'e'并且不返回任何内容。是否有任何方法告诉R在连接步骤中为未找到的对象分配值“NA”并继续运行其余代码而不是停止?所以返回将是

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跳过无法计算的东西。)

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

1 个答案:

答案 0 :(得分:0)

我能想到的几个解决方案,

  1. 初始化您计划使用的所有变量,因此它们具有您想要的默认值。

    a = b = c = d = e = NA

  2. 然后运行你的代码。如果弹出错误,变量中将包含NA。

    1. 使用“tryCatch”。如果您不知道这是什么,我建议您阅读it。它可以让你处理错误。
    2. 以下是您的代码中的示例

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