R:从已编译代码中的现有连接读取

Jon*_*den 7 api connection r

我希望能够从任意R连接(在某种意义上?connections)中读取,该连接将由用户传递给R函数,然后通过传递到某些C代码.Call.

文件中的R API R_ext/Connections.h指定了一个函数,R_ReadConnection它将一个指向Rconn结构的指针作为它的第一个参数,然后执行我想要的操作.结构本身也在该标头中定义,但除了getConnection(C函数)之外,我看不到检索该类型结构的方法,它不是API的一部分.据我所知,与连接关联的外部指针也不直接指向结构.

那么,有谁能告诉我是否有一种支持的方法将一个合适的转换SEXP为指向相关Rconn结构的指针?

提前致谢.

Jon*_*den 2

R API函数R_GetConnection()是在R 3.3.0中添加的。SEXP它执行从到 指针 到Rconn(又名)的转换Rconnection。因此,现在的解决方案是

#include <R_ext/Connections.h>

SEXP myfunction (SEXP conn_)
{
    Rconnection conn = R_GetConnection(conn_);
    // Do something with the connection
    
    return R_NilValue;
}
Run Code Online (Sandbox Code Playgroud)

记录在NEWS

R_GetConnection() 允许实现连接的包将 R 连接对象转换为 Rconnection 句柄。以前使用低级 R 内部 getConnection() 入口点的代码应该切换。