使用 Rcpp 中的 R 连接对象

Use R connection object from Rcpp

提问人:Davor Josipovic 提问时间:7/23/2023 最后编辑:Davor Josipovic 更新时间:7/29/2023 访问量:68

问:

我正在编写一些用于快速读取二进制文件的C++函数。理想情况下,我会有这样的东西:

con <- file("path/to/your/file.bin", "rb")
extract1 <- rcpp_process(con)
extract2 <- rcpp_process(con)
# ...
close(con)

Rcpp 函数应如下所示:

// [[Rcpp::export]]
RawVector read_bin(SEXP con) {
  
  // cast con to std::ifstream

  // do some magic based on con

  return data;
}

我不知道的是 R 的对象 () 是什么。我想只是把它投进去太容易了?connectionconstd::ifstream

一种方法是使用该对象并调用 R 的 .这是 (cf. code) 中使用的 aproach。但我宁愿用普通的 C 语言来做,以使处理速度更快(因为将被调用数百万次)。Rcpp::FunctionreadBin()readrreadBin()

有什么建议吗?作为第一步,快速和肮脏也是可以的。

r rcpp iostream

评论

3赞 Dirk Eddelbuettel 7/23/2023
例如,我的 RcppRedis 包(利用我的 RApiSerialize 包包装(否则未导出的)基本 R 功能)以及精细的包 fst 和 qs(两者都处理“优于 rds 压缩/磁盘序列化”)中有相当多的现有技术。

答: 暂无答案