2017-07-02 99 views
0

我目前正在使用Windows計算機,並且與knitr和Rcpp有一些問題交互。編譯共享庫時發生Knitr和Rcpp錯誤1

我的代碼工作正常,當我在Rstudio運行它,但是當我嘗試使用knitr創建的HTML文件,我得到的錯誤:enter image description here

創建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線,但當我按下針織按鈕時,會出現同樣的錯誤。

+0

'cppFunction'調用'sourceCpp'函數。如果您向我們提供一些代碼,可能會更有幫助。 – Consistency

+0

用簡單的例子編輯這個問題。 – Freguglia

+0

不知道該說些什麼。我使用(r)降價和實際rcpp代碼在所有時間編寫投影儀幻燈片。 –

回答

0

那麼,看here後,我發現它可能是Rtools的東西。看起來R會議在knitr中運行對於「找到Rtools」不太靈活,所以它不起作用。我不確定這是否有意義。

如果有其他人有這個問題,我發現一個簡單的解決方法是在調用cppFunction(確保位置RBuildTools在PATH上)之前將以下行添加到Rmd文件。它會在嘗試編譯之前找到Rtools。

library(devtools) 
find_rtools() 

如果別人有什麼事情,以及如何解決它,所以我沒有這些行添加到每個文件的更技術性的解釋,我將不勝感激。

+1

您是否閱讀過您鏈接的文章?我提供了你想要的技術解釋。 (請參閱第一段和第二段以及必要的永久修復。)簡而言之,_Rtools_安裝沒有正確完成。請按照下面的說明進行操作:http://thecoatlessprofessor.com/programming/rcpp/install-rtools-for-rcpp/ – coatless

+0

對不起,我一開始並沒有仔細閱讀,但我認爲它澄清了問題所在。剛剛添加變量到Path並沒有解決它,但我已經刪除了RBuildTools文件夾(我假設這是卸載Rtools),刪除了Rtools的路徑條目,並在您的指南中再次安裝,現在已經修復。謝謝。 – Freguglia