2014-03-26 102 views
1

我一直在研究R的擴展,它會做一些聚類。該項目使用C++和Rcpp(計算使用RcppArmadillo執行)。因此,我有幾個課程需要測試。我被建議使用googletest。不幸的是,我沒有運行任何測試代碼。沒有R的測試R擴展

問題是,爲了測試使用rcpp和googletest框架的類,我必須在R環境之外工作。

我的意思是我不會將數據轉換爲像矢量這樣的標準C++數據結構。數據集應該是巨大的。我用數據獲得NumericMatrix,並將其傳遞給它。這會導致所有C++類使用Rcpp.h(或犰狳)。我想知道我是否可以在R之外使用這些類。

我一直在尋找關於使用Rcpp作爲庫的獨立程序的任何信息,但我所獲得的是與R命令直接編譯的C++代碼相反的「獨立」代碼通過內聯包提供的在線接口。我寧願使用googletest,因爲我可以直接測試C++。

問題是一個人是否可以在沒有R的情況下使用Rcpp?

回答

1

在嚴格意義上,你不能因爲RCPP代碼旨在從R.

稱爲從更廣泛的意義上說,當然你也可以提供你正確寫你的接口。寫的C++代碼,不而不是取決於R和Rcpp頭,只使用C + +和STL和犰狳,也許googletest成語。即不使用Rcpp類型,如Rcpp::NumericMatrix,但使用犰狳類型,如arma::mat。測試他們的生活日光。也許把它們包裝在一個圖書館裏。

然後,只需使用Rcpp和RcppArmadillo編寫一個精簡訪問層即可。 Et瞧 - 你已經測試了代碼,在R中訪問。

+0

不,你不知道。默認對流器重用R內存。只要閱讀文檔,或以前的討論,或簡單地記憶配置文件。 –