我正在通过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跳过无法计算的东西。)
非常感谢任何想法!谢谢!
答案 0 :(得分:0)
我能想到的几个解决方案,
初始化您计划使用的所有变量,因此它们具有您想要的默认值。
a = b = c = d = e = NA
然后运行你的代码。如果弹出错误,变量中将包含NA。
以下是您的代码中的示例
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
})