获取包含cppFunction
函数的文件不会编译/加载该函数。下面是具有两个函数的代码,一个函数在R
函数中包装为字符串。
cat('
rcpp_iter <- function()
{
Rcpp::cppFunction(\'NumericVector func0_with_RString(NumericVector df1,NumericVector df2){
int N1 = df1.size();
NumericVector df3(N1);
df3[0]=df2[0];
for(int i=1;i<N1;++i)
{df3[i]=df2[i-1]+df1[i];}
return df3;
}
\')
}
Rcpp::cppFunction(\'NumericVector func0(NumericVector df1,NumericVector df2){
int N1 = df1.size();
NumericVector df3(N1);
df3[0]=df2[0];
for(int i=1;i<N1;++i)
{df3[i]=df2[i-1]+df1[i];}
return df3;
}
\')
',file='testcpp.r')
source('testcpp.r')
set.seed(100);x=sample(1:100,10)
flag0 <- c(1,0,0,1,1,1,0,0,1,0)
rcpp_iter();func0_with_RString(flag0,x)
不起作用
func0(flag0,x)
有效
调用func0_with_RString
后,为什么rcpp_iter
无效?
答案 0 :(得分:4)
您的问题的答案与以下答案一致:为什么在下面的示例中找不到x
?
f <- function() {
x <- 10
}
f()
print(x)
## Error: object 'x' not found
查看env
的{{1}} arg。你可以,例如传递RCpp:cppFunction
以绑定全局环境中的env=globalenv()
。
但这绝对不是定义函数的正确方法(除非你只是好奇)。请参阅@ DirkEddelbuettel对此事的评论。