我想评估Rcpp函数内的变量
SEXP foo(SEXP arg) {
SEXP x = NULL;
try {
x = Rcpp_eval(arg, Environment::global_env());
} catch(...) {
printf("Error\n");
}
return x;
}
如果在arg
中初始化.GlobalEnv
,那么似乎没问题。
x <- 1
foo(substitute(x))
但如果arg
未在.GlobalEnv
中初始化,则发生段错误
foo(substitute(y))
我做错了什么?或者这是Rcpp
中的问题?
答案 0 :(得分:4)
将x
设置为R_NilValue
以在出错时返回R&lt; NULL,而不是NULL指针。大概你不想使用printf()
来处理错误。我想你的意思是
x = Rcpp_eval(arg, Environment::global_env());
(arg
而不是mode
)。
SEXP foo(SEXP arg) {
SEXP x = R_NilValue;
try {
x = Rcpp_eval(arg, Environment::global_env());
} catch(...) {
printf("Error\n");
}
return x;
}