【发布时间】:2017-07-02 19:49:33
【问题描述】:
我目前正在使用 Windows 计算机,但在与 knitr 和 Rcpp 交互时遇到了一些问题。
我的代码在 Rstudio 上运行时运行良好,但是当我尝试使用 knitr 创建 html 文件时,出现错误:
当我删除该行时创建 html 文件有效,因此在 Rcpp 或 knitr 包中似乎都不是问题。
另外,我从未在代码中使用过 sourceCPP 函数,而是使用 cppFunction(以 C 代码为字符串的变量)。
根据需要,我创建了一个简化的示例,脚本“cppcode.R”如下:
library(Rcpp)
library(RcppArmadillo)
ccode = "
NumericMatrix rand_mat(NumericVector dim){
IntegerVector v = seq_len(2) - 1;
int N = dim[0];
int M = dim[1];
NumericMatrix Y(N,M);
for(int i=0;i<N;i++){
for(int j=0;j<M;j++){
Y(i,j) = sample(v,1,true)[0];
}
}
return Y;
}
"
cppFunction(code=ccode,depends="RcppArmadillo")
然后是Rmd文件:
#This is an example
```{r}
source("cppcode.R")
rand_mat(c(3,3))
```
如果只是在 Rstudio 上运行这些行,但当我按下 knit 按钮时给我同样的错误。
【问题讨论】:
-
cppFunction在其中调用sourceCpp函数。如果您向我们提供一些代码可能会更有帮助。 -
用一个简化的例子编辑了问题。
-
不知道该说什么。我用 (r)markdown 和实际的 rcpp 代码编写投影仪幻灯片一直。
-
@VictorFreg 我无法重现该错误。 R文件和Rmd文件在同一个目录吗?
-
是的,他们是。事实上,我测试过的另外两台(linux)计算机一切正常。