小编use*_*235的帖子

有效地计算R中两个3D阵列的叉积和

例如,对于R中的两个3D阵列,

N <- 1000
x <- rnorm(N*3*3);   dim(x) <- c(N,3,3)
y <- rnorm(N*3*3);   dim(y) <- c(N,3,3)
Run Code Online (Sandbox Code Playgroud)

我可以循环执行以下交叉乘积:

gg <- 0
for (n in 1:dim(x)[1]){
    gg <- gg + t(x[n,,]) %*% y[n,,]
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,在不使用循环的情况下,是否可以将其做得更大(例如通过矢量化或rcpp)更有效N

r cross-product rcpp rcpparmadillo

4
推荐指数
1
解决办法
85
查看次数

如何在R中的rcpp中正确更改ListMatrix的列表

我想在rcpp中更改ListMatrix列表的元素,但始终无法做到这一点.请参阅以下玩具示例:

library("Rcpp")
cppFunction('
ListMatrix ListMatrixType(ListMatrix x){
            NumericMatrix a = x(0,0);
            a(0,0) = 100;
            return x;
            }
            ')
x = matrix(list(matrix(0,3,2)),2,2)
a = ListMatrixType(x)
a[[1,1]]
a[[2,2]]
Run Code Online (Sandbox Code Playgroud)

我希望只会a[[1,1]改变,但为什么a[[2,2]]也会改变?

> a[[1,1]]
     [,1] [,2]
[1,]  100    0
[2,]    0    0
[3,]    0    0
> a[[2,2]]
     [,1] [,2]
[1,]  100    0
[2,]    0    0
[3,]    0    0
Run Code Online (Sandbox Code Playgroud)

我必须误解rcpp中的索引规则.所以我的问题是如何正确更改每个列表的元素?我想每个列表都包含一个矩阵.

indexing r rcpp

1
推荐指数
1
解决办法
381
查看次数

标签 统计

r ×2

rcpp ×2

cross-product ×1

indexing ×1

rcpparmadillo ×1