2017-06-08 58 views
3

假設您將一個environment R對象傳遞給通過.Call接口的內部C例程。所述enviromnent具有(在設計上)我想從C端提取和操縱的對象someObject。怎麼做?R-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

回答

3

後google搜索和搜索的一點點,我已經找到了解決辦法:

findVar(install("someObject"),env) 

在C代碼基本上是get("someObject",env)在R.

相當於