gpt4 book ai didi

c++ - 如何在 R 对象中存储 CPP 类?

转载 作者:行者123 更新时间:2023-11-30 03:46:52 25 4
gpt4 key购买 nike

我想知道是否有办法在 R 对象中存储 CPP 类。

我知道我们可以在 R 中调用 CPP 函数,也可以调用 CPP 类的方法。

但是我想在一个R对象中操作CPP类,我不知道这是否可能。

示例:

我在 R 脚本中调用此代码:

dyn.load(paste("X", .Platform$dynlib.ext, sep = ""))
.C("X_main")

X_main 函数:

extern "C" {
void X_main () {
X x;
}
}

在 X.cpp 中:

X::X()  { cout<<"constructor X\n"<<endl;}

我可以在 R 对象中存储类“X”的对象吗?并在存储的对象上使用类“X”的方法(在脚本中之后)?

或者,我可以在内存中存储 X 类的对象吗?我想多次使用这个对象。

最佳答案

通过编写转换器,您可以分配 X组件,它映射到 R 也知道的类型:integernumeric, character, ... 都是标量或 vector ,当然还有它们的组合。

但是你不是免费得到它的。有了 Rcpp 和 friend 们,我们有了所有的包装器——以及一堆构建工具——来让这一切变得简单:

R> library(Rcpp)
R> cppFunction("arma::mat doubleIt(arma::mat X) { return 2*X; }",
+ depends="RcppArmadillo")
R> doubleIt(matrix(1:9,3))
[,1] [,2] [,3]
[1,] 2 8 14
[2,] 4 10 16
[3,] 6 12 18
R>

这里有 900 多个其他 Rcpp 问题,Rcpp Gallery site 上有近 100 个有效示例.环顾四周!

关于c++ - 如何在 R 对象中存储 CPP 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33939492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com