假设您通过environment
接口将.Call
R对象传递给内部C例程。所述enviromnent
具有(按设计)一个someObject
对象,我想从C侧提取和操作。怎么做?
为了简化我的问题,我只想编写一个返回someObject
的C函数。像这样:
en <- new.env()
en$someObject <- someValue
.Call("extractObject",en)
#the above should return en$someObject
猜猜C代码应该看起来像
SEXP extractObject(SEXP env) {
return SOMEMACROORFUNCTION(env, "someObject");
}
不幸的是,我无法找到真正的SOMEMACROORFUNCTION
。
答案 0 :(得分:3)
经过一番谷歌搜索和搜索后,我找到了解决方案:
findVar(install("someObject"),env)
C代码中的基本上相当于R中的get("someObject",env)
。