Rcppを使用して参照渡しの方法に関する多くの例を確認しました。私は例えばthis非常に大きい参照してください。しかし、私は1つの質問があります。 Rのオブジェクトとして行列があり、エントリ[1,1]に1を加えたいとします。行列がCppにある場合の例を私が見たが、私はリターンステートメントを使用せずにRで更新を返したい。 Rcpp参照によって渡された更新行列がRで返されます。
この
は私がリストで行った例であり、それは非常によく//[[Rcpp::export]]
void test(List& a){
a(0)=0;
}
私はマトリックスとsimilarely行う必要があります動作します。
//[[Rcpp::export]]
void test(arma::mat& a){
a(0,0)=0;
}
2番目の列は更新されずにリストが更新されます。
誰でも手伝ってもらえますか?
私はおそらくあなたを助けることができるが、私はあなたがtest' 'に渡す行列を参照する必要があります。あなたは編集できますか? –
Rのすべての関数に戻り値があります。もちろん、目に見えない "NULL"を返すことができます。しかし、行列を目に見えなく戻す方が賢明でしょう。 – Roland
PrivéとRolandに感謝します。任意の行列で私を助けてください。行列2 * 2があり、return文を使わずに値[1,1]を変更したいとしましょう。実際、私はもっと複雑なケースでこのソリューションを使いたいと思っています。私の関数は2つのリストと3つの行列をとり、更新後も同じオブジェクトを返します。今のところ、私はリストに更新を入れます(私は5のリストを作成しました)、私はリストを返します。しかし、リストには大きな行列とリストが含まれているため、非常に重いです。したがって、私は参照渡しし、オブジェクトのリストをリターン変数として構築せずに更新したいと思います。 –