我正在使用Writing R Extensions手册学习R的C接口,我对将原生C阵列转换回SEXP感到困惑。例如,双精度BLAS程序会产生一个我想要返回R的双数组。是否有内置函数将整个数组转换为矢量或矩阵SEXP类型?我知道我可以使用REAL()
函数从SEXP获取数组,但有一个"向后"功能呢?
例如,来电yada(C, ...)
需要double *C
并在*C
中提供结果。目前,我正在使用诸如
SEXP result = PROTECT(allocVector(REALSXP, n_result));
double *pResult = REAL(result);
for (int i = 0; i < n_result; i++) {
pResult[i] = C[i];
}
将值转换为正确的SEXP类型以返回,但是有更好的方法吗?
感谢您的帮助。我是C的新手,如果我有一个更简单的方法可以忽略,我会道歉。