我希望我的C函数能够操纵存储在R数据帧中的某些值。
为了实现这一点,需要一个(实际的)内存地址,R数据帧在该地址中存储其数据(希望以连续的方式);然后从R中调用C函数,并将此内存地址作为参数传递。
问题:我们如何获得R数据帧的内存地址?
最佳答案
Rcpp通过引用传递。即它传递指向R对象的指针,而不是指向它们的值。因此,您可以在C++中以与任何指针相同的方式操作它们。
例
library(Rcpp)
cppFunction('
void f1(DataFrame x) {
IntegerVector V1 = x["V1"];
V1 = V1 * 2;
}
')
x = data.frame(V1 = 1:5, V2 = 1:5)
f1(x)
x
# V1 V2
# 1 2 1
# 2 4 2
# 3 6 3
# 4 8 4
# 5 10 5
关于c++ - 获取R数据帧的内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59663174/