1
從R到C++傳遞3D數組我找不到如何執行此操作。我在R中有一個3D數組,我想在C++中使用它。 任何人都可以幫忙嗎? 非常感謝。如何使用.Call
從R到C++傳遞3D數組我找不到如何執行此操作。我在R中有一個3D數組,我想在C++中使用它。 任何人都可以幫忙嗎? 非常感謝。如何使用.Call
您已經找到了.Call()
接口,它將允許您將R對象傳遞給C++。然後,您有(至少)兩個選擇:
使用通過R API C和宏作爲附帶R.它的工作原理寫作R附加軟件'說明書描述,很多人使用它,它具有通過了時間的考驗。這也有點乏味,至少對我的口味來說。
通過我們的Rcpp包和它在R API之上提供的API來使用C++。我們沒有太多的多維數組示例,但可以完成。在內部,這些當然是具有維度屬性的連續向量。
你也可以使用Rcpp去RcppArmadillo具有適當「魔方」型,一般化從2D矩陣圖3d - SEEE的Armadillo文檔。
編輯:這裏是一個小例子:
R> library(inline)
R> f <- cxxfunction(signature(ms="numeric"), plugin="Rcpp", body='
+ Rcpp::NumericVector m(ms);
+ return m.attr("dim");
+ ')
R> A <- array(1:8, c(2,2,2)) # 3-d array
R> f(A) # call C++ function defined above to get dim array
[1] 2 2 2
R>
它並沒有做太多,除了返回你傳遞的數組的維向量對於實際的訪問,您可能需要計算。這個維度用手進行 - 我們根本沒有看到任何超出矩陣的需求。而最後一次我需要這個,我只用arma::cube
從Armadillo通過RcppArmadillo。
下面是如何在C++中定義2d和3d數組:http://www.cplusplus.com/forum/articles/7459/希望至少讓你開始吧 – Brady
C.在C中幾乎沒有多維數組不知道R,但要傳遞任何東西給C你應該將你的3D數組轉換爲1d緩衝區並將它與步幅信息一起傳遞。 –