當與其他語言接口時,R使用包含類型Rcomplex
的標頭R_ext/Complex.h
,其似乎是std::complex<double>
的實現。使用它的標準方式將是一個複雜的向量x_
在R
: Rcomplex *px = COMPLEX(x_);
然而,因爲我需要它傳遞給armadillo
然後我做的: arma::cx_vec x(px, nrows(x_), false, false);
將R複雜對象傳遞給犰狳C++
但armadillo
不接受Rcomplex
類型。我曾嘗試這樣做,而不是: std::complex<double> *px = COMPLEX(x_);
但得到以下error: cannot convert ‘Rcomplex*’ to ‘std::complex<double>*’ in initialization
你有R中經過複雜的矢量std::complex<double> type
任何線索?我知道Rcpp
但想有一個直接的解決方案依託基地R.
編輯:下面一個評論,我想澄清的是Rcomplex
是C
類型,但它根據與std::complex<double>
兼容answer by @Stephen Canon。
編輯2:爲什麼德克的回答比接受的答案有更多的投票,如果它不回答「沒有依賴」的問題。另外,我顯然已經被低估了,因爲如果最好是用C或C++來使用base R,有人不喜歡它。無論如何,我有更好的事情要做,但這不是我第一次在提出某些與基準R與C或C++接口相關的問題時得不到我原來的問題的答案,並且得到了一個我沒有要求的相關答案Rcpp
。
爲什麼你不想使用RcppArmadillo有一個特定的原因嗎? – Roland
@Roland對於簡單的事情,我通常更喜歡避免依賴,我的功能非常簡單,但我想加快速度。 – nopeva
@nopeva:這就是所謂的重塑車輪。按照相同的邏輯,你不會使用犰狳。或R. –