我想将一个简单的s4对象传递给C并将其转换为一个简单的结构。我想象R代码
setClass("MyClass", slots = list(x = "numeric", y = "integer"))
r_instance = new("MyClass", x = rnorm(5), y = as.integer(1:10))
dyn.load("parse.so")
.Call("parse", r_instance)
parse.c
#include <R.h>
#include <Rinternals.h>
#include <Rmath.h>
typedef struct {
double x;
int y;
} MyStruct;
SEXP parse(SEXP r_instance){
MyStruct c_instance = MAKE_S4_INTO_STRUCT(r_instance);
printf("%g %d\n", c_instance->x[0], c_instance->y[0]);
return R_NilValue;
}
是否有MAKE_S4_INTO_STRUCT
功能可以使这项工作?我还没有在Hadley's C interface page或R extensions manual找到答案。