c++ - 获取R数据帧的内存地址

标签 c++ r c rcpp

我希望我的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/

相关文章:

c - UTF-8 格式输出与 Unicode\uxxxx

c - 在小端机器上,位运算符如何工作?

c++ - 使用 remove 从字符串问题中删除字符实例

c++ - 带有引用参数的函数不能处理从其他函数返回的值

r - 如何添加现有列表的后缀(或前缀)元素?

r - ggplot2 中 facet_wrap() 的手动中断

r - 如何在R中自动使函数的结果成为同一函数的参数

c++ - 在 Mac OS X Mountain Lion(或更高版本)和 Linux 上使用 X11/Xlib.h

c++ - 使用 C++ 的 std::move 从内部范围内的对象到外部范围安全吗?

c - int=float%int; 有什么问题?