0
我試圖在我的Rcpp代碼中使用nearPD
函數。雖然看起來微不足道,但我找不到爲什麼它不起作用。這是我的代碼的簡化版本:當我在R中運行Rcpp cde時出現「不是矩陣」錯誤
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
using namespace arma;
using namespace Rcpp;
// [[Rcpp::export]]
mat eBsc(mat R){
Rcpp::Environment Matrix("package:Matrix");
Rcpp::Function nearPD = Matrix["nearPD"];
Rcpp::List PD=nearPD(R);
mat P = PD["mat"];
return P;
}
但是,當我想測試它,如下面的R:
A <- matrix(1, 3,3); A[1,3] <- A[3,1] <- 0
d<-eBsc(A)
我看到這個錯誤信息:"Error in eBsc(A) : not a matrix"
。 我不得不提一下,nearPD返回一個輸出列表,其中第一個是矩陣。
非常感謝,它現在有效。 – Ham82
但如果我想在其他一些計算中使用此矩陣,它不起作用。例如,如果我有一個墊子或NumericMatrix A,即使使用「as.matrix」命令,「A * P」也不起作用。有沒有辦法將P(作爲S4對象)轉換爲Rcpp代碼中的合適類型的數據? – Ham82
是的,我解釋瞭如何在我的答案中將其轉換爲矩陣。 – Roland