R - C接口:从环境中提取对象

时间:2017-06-08 13:39:34

标签: c r

假设您通过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

1 个答案:

答案 0 :(得分:3)

经过一番谷歌搜索和搜索后,我找到了解决方案:

findVar(install("someObject"),env)
C代码中的

基本上相当于R中的get("someObject",env)