2

Rcpp 関数を別の名前でエクスポートすると、あるマシンでは成功しますが、別のマシンでは失敗します。R 環境は非常に似ています。私は何を間違っていますか?

詳細

次の署名でエクスポートされる Rcpp 関数を含む R パッケージがあります ( 内sample_int_crank.cpp)。

// [[Rcpp::export(sample.int.crank)]]
IntegerVector sample_int_crank(int n, int size, NumericVector prob) {
    ...

この関数は、対応する R ファイル ( sample_int_crank.R)で空として宣言されています。

sample.int.crank <- function(n, size, prob) {
}

EDIT:このRファイルを削除すると、機能が利用可能になります。しかし、この関数の roxygen2 コメントはどこに配置すればよいでしょうか?

さて、GitHub からパッケージをインストールすると、

library(devtools)
install_github('wrswoR', 'muelleki', '0.0.6')

マシンAでは、次のように書かれています:

> sample.int.crank
internal C++ function <0x29ddc40>
    signature : Rcpp::IntegerVector sample.int.crank(int, int, Rcpp::NumericVector)

マシンB :

> sample.int.crank
function(n, size, prob) {
}
<environment: namespace:wrswoR>

EDIT :sample_int_crank.Rをパッケージから削除すると、出力は異なって見えますが、ABでは同じになります。ここで何が起こっているのですか?

library(devtools)
install_github('wrswoR', 'muelleki')

> sample.int.crank
function (n, size, prob) 
{
    .Call("wrswoR_sample_int_crank", PACKAGE = "wrswoR", n, size, 
        prob)
}
<environment: namespace:wrswoR>

少なくとも R と Rcpp -- AsessionInfo()については、多かれ少なかれ同一のようです。

> sessionInfo()
R version 2.15.3 (2013-03-01)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=C                 LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] wrswoR_0.0.6    logging_0.7-102 Rcpp_0.10.3     devtools_0.8   

loaded via a namespace (and not attached):
 [1] digest_0.5.2    evaluate_0.4.2  httr_0.1.1      memoise_0.1    
 [5] parallel_2.15.3 plyr_1.7.1.99.2 RCurl_1.95-0    stringr_0.6.1  
 [9] tools_2.15.3    whisker_0.1    

B :

> sessionInfo()
R version 2.15.3 (2013-03-01)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.utf-8       LC_NUMERIC=C
 [3] LC_TIME=en_US.utf-8        LC_COLLATE=en_US.utf-8
 [5] LC_MONETARY=en_US.utf-8    LC_MESSAGES=en_US.utf-8
 [7] LC_PAPER=C                 LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.utf-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] wrswoR_0.0.6   logging_0.6-92 Rcpp_0.10.3    devtools_1.1

loaded via a namespace (and not attached):
[1] digest_0.6.3    evaluate_0.4.3  httr_0.2        memoise_0.1
[5] parallel_2.15.3 RCurl_1.95-4.1  stringr_0.6.2   tools_2.15.3
[9] whisker_0.1

何か案が?

4

1 に答える 1

1

ご質問について

しかし、この関数の roxygen2 コメントはどこに配置すればよいでしょうか?

ここではRcpp 属性で roxygen(2) がサポートされていないことを残念に思います。多分あなたはそれを貢献したいですか?

一方、通常の C++ 関数を R で書きsrc/、通常の R 関数から呼び出すことはもちろんサポートされており、roxygen2 で問題なく使用できます。

devtools がパッケージに対して行うことについて: また、わかりません。Romainも私も開発ツールを使用していないため、文書化されておらず未定義の領域にいます.

于 2013-04-03T11:12:05.910 に答える