我正在用Rcpp試圖從Rcpp代碼中創建sparseMatrix的實例,讓自己的腳變得溼潤。如何在Rcpp代碼中創建R包的S4類的實例
據我所知,爲了創造S4對象我們稱之爲S4的構造與所需類的名字作爲一個字符串,如:
S4 foo() {
S4 s("dgCMatrix");
return s;
}
但在我的情況下,這將失敗,並
Error in getClass("dgCMatrix") : 「dgCMatrix」 is not a defined class
我認爲這是因爲Matrix包尚未加載?我曾嘗試添加
// [[Rcpp::depends(Matrix)]]
以及包的描述中的Matrix的Imports和LinkingTo指令,但我仍然得到相同的錯誤。如何從Rcpp中創建來自R類的實例?
UPDATE:以下coatless'answer,類需要在命名空間被導入,如果Matrix是不被加載:
//' @importClassesFrom Matrix dgCMatrix
// [[Rcpp::export]]
S4 foo() {
S4 s("dgCMatrix");
return s;
}
的情況下,照顧它使用的是Roxygen2管理的命名空間。
咦?這個表達式應該表示什麼:'S4 s(「dgCMatrix」)'......需要更多的代碼。 –
您不要在那裏調用構造函數'Matrix'。要麼從Rcpp調用這個R函數,要麼在C++中創建自己的構造函數。或者使用Armadillo的稀疏矩陣類。 – Roland
在[Rcpp Gallerty](http://gallery.rcpp.org)上有_e.g._的例子。 –