我想使用从 R 获得的 C 列表。我意识到这个问题与此非常相似:使用 .call() 在 R 和 C 之间传递数据帧 https://stackoverflow.com/questions/6658168/passing-a-data-frame-from-to-r-and-c-using-call。
但是,我无法将其存储在指针“*target”中,我将在其中进一步使用它。
R:
.Call("processlist", list(c(1,2), c(1,3,2), c(1,5,4,4)))
在C中:
#include <Rinternals.h>
#include <Rdefines.h>
extern "C" {
SEXP processlist(SEXP lst);
}
SEXP processlist(SEXP lst){
SEXP vec = PROTECT(allocVector(VECSXP, 2));
SET_VECTOR_ELT(vec, 0, VECTOR_ELT(c, 0);
SET_VECTOR_ELT(vec, 1, VECTOR_ELT(c, 1);
SET_VECTOR_ELT(vec, 2, VECTOR_ELT(c, 2);
const lngth = 3;
int *target[lnght];
// Here i want to fill "target", but how?
int *preTarget = INTEGER(vec);
// Bad attempts
target[0] = INTEGER(preTarget[0]);
target[0] = INTEGER(vec[0]);
}
注意:不幸的是,C++ 不是一个选项。
编辑:所需的输出是我可以通过以下方式调用 *target 。
target[0][0] --> Returns: 1
target[1][2] --> Returns: 2
target[2][3] --> Returns: 4
以这种方式调用“vec”此时会引发错误。