r - 使用 `data.table` 和/或 `Rcpp` 将 `RcppArmadillo` 传递给 C++ 函数

标签 r data.table rcpp

有没有办法通过data.table使用 Rcpp 将对象转换为 C++ 函数和/或 RcppArmadillo无需手动转换为 data.tabledata.frame ?在下面的例子中 test_rcpp(X2)test_arma(X2)都失败了 c++ exception (unknown reason) .

R码

X=data.frame(c(1:100),c(1:100))
X2=data.table(X)
test_rcpp(X)
test_rcpp(X2)
test_arma(X)
test_arma(X2)

c++ 函数
NumericMatrix test_rcpp(NumericMatrix X) {
    return(X);
}

mat test_arma(mat X) {
    return(X);
}

最佳答案

在其他答案的基础上,这里有一些示例代码:

#include <Rcpp.h>
using namespace Rcpp ;

// [[Rcpp::export]]
double do_stuff_with_a_data_table(DataFrame df){
    CharacterVector x = df["x"] ;
    NumericVector   y = df["y"] ;
    IntegerVector   z = df["v"] ;

    /* do whatever with x, y, v */
    double res = sum(y) ;
    return res ;
}

所以,正如马修所说,这对待 data.table作为 data.frame (又名 Rcpp::DataFrameRcpp 中)。
require(data.table)
DT <- data.table(
    x=rep(c("a","b","c"),each=3), 
    y=c(1,3,6), 
    v=1:9)
do_stuff_with_a_data_table( DT ) 
# [1] 30

这完全忽略了 data.table 的内部结构.

关于r - 使用 `data.table` 和/或 `Rcpp` 将 `RcppArmadillo` 传递给 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13773529/

相关文章:

R Paste() 命令和向量

r - 基于成功率填充的 stat_bin2d

r - fwrite 是否锁定文件以供同时读取

通过 RCpp 返回 NA

r - 如何在 R 中编写分段函数进行一些模拟并将值存储在数据框中

r - 有没有一个R函数可以选择一组变量的最后一行?

r - 在 data.table 中为缺失值添加行

r - R 中带有子集的 For 循环

c - 从 R 中的 .C 调用返回输出

r - 附加 rstan 包时出错 : Entry Point Not Found