我想创建某种结构来减少从 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 文件中的参数。因为需要的参数数量可能会增加,所以代码的人类可读性会急剧下降。