【发布时间】:2019-03-03 15:05:07
【问题描述】:
使用 SEXP 作为函数的参数不允许用户通过简单的赋值在它们之间交换数据。我曾经使用 tmp 缓冲区复制每个值来执行交换。 我的问题是:有可能编写一个只交换这样的数据的函数:
// [[Rcpp::export]]
void swap(SEXP x, SEXP y){
std::swap(x,y);
}
那么如果我用 R 运行这个函数,x 和 y 将被交换?
【问题讨论】:
-
不,但你可以编写一个辅助函数来做。我不会在
std命名空间中放置这样的助手,因为您想要的SEXP是非常 non 标准的,特定于 R 并且用 C 编写的。总之有一点不匹配在你的类型之间。 -
我一直使用 std::copy 来进行快速复制,但这需要很多时间和空间。我也尝试交换符号,但它不起作用。