gpt4 book ai didi

c++ - Rcpp 中 "List"的操作函数 - 类似于 R 中的 "Reduce function"

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:07:07 24 4
gpt4 key购买 nike

我是 Rcpp 的新手。我想知道如何有效地总结“列表”的元素。我想知道它的一些操作函数,比如 R 中的 Reduce()。例如,

A=list(c(1,2,3,4),c(-1,1,0,-2))
B=Reduce('+',A)

它给出 B=c(0,3,3,2)。谢谢。

最佳答案

以后,您应该包括您到目前为止尝试过的方法以及它为什么不起作用,或者解释您遇到的问题。正如您在评论中阐明的那样,这应该按照您的意愿执行(对存储在列表中的数字矩阵求和):

#include <Rcpp.h>

using namespace Rcpp;

// [[Rcpp::export]]
NumericMatrix Rcpp_matrix_List_sum(List x) {
int n = x.size();
NumericMatrix result = as<NumericMatrix>(x[0]);
for ( int i = 1; i < n; ++i ) {
result += as<NumericMatrix>(x[i]);
}
return result;
}

/*** R
A <- list(matrix(c(1, 2, 3, 4), nrow = 2), matrix(c(-1, 1, 0, -2), nrow = 2))
Rcpp_matrix_List_sum(A)
*/

结果:

> A <- list(matrix(c(1, 2, 3, 4), nrow = 2), matrix(c(-1, 1, 0, -2), nrow = 2))

> Rcpp_matrix_List_sum(A)
[,1] [,2]
[1,] 0 3
[2,] 3 2

注意:

这假设列表 x 的每个元素实际上都是一个 NumericMatrix。如果不是这种情况,将抛出错误。

关于c++ - Rcpp 中 "List"的操作函数 - 类似于 R 中的 "Reduce function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48126875/

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