这是我想要的一个简单的例子:
x <- stats::rWishart(10, 3, matrix(c(4,1,1,3), nrow = 2))
apply(x, 3, function(m) {return(m + matrix(c(1,2,3,4), nrow=2))})
显然,人们希望它的输出是一个 2x2x10 的数组(与输入相同)。然而,由于一些模糊的原因,R 自动将矩阵输出转换为向量,因此上面的代码实际上返回一个 4x10 矩阵(而不是一个 2x2x10 数组)。
我该如何解决 ?
从 R 4.10 开始,有一个simplify=
要应用的参数,您可以使用它返回一个列表,该列表可以通过以下方式简化回数组simplify2array
:
out <- simplify2array(
apply(x, 3, function(m) {return(m + matrix(c(1,2,3,4), nrow=2))},
simplify=FALSE))
dim(out)
#[1] 2 2 10
或者您可以替换/覆盖现有数据:
覆盖原始对象:
x[] <- apply(x, 3, function(m) {return(m + matrix(c(1,2,3,4), nrow=2))})
替换原对象的内容并返回一个新对象:
replace(x, , apply(x, 3, function(m) {return(m + matrix(c(1,2,3,4), nrow=2))}))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句