我有一個函數嵌套在R中的另一個函數中。由於較深的函數有點慢,我決定使用sourceCpp交換一些編譯代碼。但是,該內部函數使用外部函數中定義的變量。在R我使用環境。什麼是C++類比?我必須使用extern關鍵字嗎?會有這樣的工作嗎?C++函數中的變量作用域通過R與sourceCpp調用
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
arma::mat myFunc(arma::mat a, arma::mat b){
extern arma::mat c;
return a + b + c;
}
在R代碼中這樣做已經不是個好主意了,所以不要在C++代碼中這樣做。你可以像Dirk說的那樣通過一個環境或者找到一個聰明的方式來展開你的C++函數中的框架,但是我沒有展示它。 –
只需顯式地將需要的變量傳遞給該函數:R在_modified_時複製它們,而不是函數調用時的複製 – hadley
如果我正在使用optim(initial.par,Linn(),...) Linn()通常依賴於不在本地範圍內的變量。 – Taylor