Я хотел бы использовать список в C, который я получил от R. Я понимаю, что вопрос очень похож на этот: Передача кадра данных из-в R и C с использованием.call(). Однако я не могу его сохранить в указателе "* target", откуда я буду его использовать.
Р:
.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" таким образом вызывает у меня ошибку на данный момент.