Rファイルからの呼び出しに含まれるパラメーターの数を減らすために、ある種の構造を作成したいと思います。
私のRファイル(example.R)には次のようなものがあります:
ret <- .Call("example",
## data
as.double (t(x)),
as.integer (nr),
as.integer(ncol(x)),
as.double (y),
as.integer (nclass),
as.integer (cross),
.....
)
そして、私のインターフェイス C ファイルは次のようになります。
SEXP example(SEXP x, SEXP rows, SEXP cols,
SEXP y, SEXP nclass, SEXP cross, SEXP sp_rows)
{
PROTECT( x = AS_NUMERIC( x ) );
PROTECT( y = AS_NUMERIC( y ) );
PROTECT( cross = AS_INTEGER( cross ) );
PROTECT( rows = AS_INTEGER( rows ) );
PROTECT( cols = AS_INTEGER( cols ) );
PROTECT( nclass = AS_INTEGER( nclass ) );
PROTECT( sp_rows = AS_INTEGER( sp_rows ) );
x_matrix = NUMERIC_POINTER(x);
y_vector = NUMERIC_POINTER(y);
int num_rows = INTEGER_VALUE(rows);
.....
アイデアは、.R ファイルにある種の構造を作成して、.C ファイルのパラメーターを読み取ることができるようにすることです。必要なパラメーターの数が増える可能性があるため、コードの可読性が大幅に低下します。