在R中,我们有一个数组和一个矩阵:
a <- array(rep(1:3, each = 4), dim = c(2, 2, 3))
b <- matrix(seq(0, 1, length.out = 6), nrow = 2, ncol = 3)
我想使用一个函数,该函数使用第三维a
中的矩阵和b
中的列作为其两个参数.对于这个例子,我们可以假设我的函数是:
myfunc <- function(x, y) { x * y }
我希望该操作返回一个3Darray.我目前的解决方案是使用sapply
作为索引,并随后将结果列表转换为数组:
res <- sapply(1:dim(a)[[3]], FUN = \(x) myfunc(a[, , x], b[, x]), simplify = FALSE)
res <- abind::abind(res, along = 3)
有没有其他方法可以实现这一操作,从而直接生成3D数组?我try 了sweep
次,但失败了.