gpt4 book ai didi

arrays - 复制 2 维矩阵以创建 3 维数组(在 R 中)

转载 作者:行者123 更新时间:2023-12-04 15:09:03 26 4
gpt4 key购买 nike

我有一个二维矩阵,我想复制 10 次以创建一个三维数组,其中数组的每个“切片”都是二维数组的相同副本。

所以,如果我的二维数组是:

a <- matrix(c(1:4),nrow=2)
> a
[,1] [,2]
[1,] 1 2
[2,] 3 4

我想作为输出一个这样的数组:
, , 1

[,1] [,2]
[1,] 1 2
[2,] 3 4

, , 2

[,1] [,2]
[1,] 1 2
[2,] 3 4

....

, , 10

[,1] [,2]
[1,] 1 2
[2,] 3 4

我看过这个页面( Duplicate matrix to form list ),其中 OP 正在寻找将矩阵复制到列表中,我对其进行了调整,然后将其转换为数组:
b<-rep(list(a), 10) # from original post
array(unlist(b), dim = c(nrow(b[[1]]), ncol(b[[1]]), length(b))) # line I added

这工作得很好,但它有点迂回 - 我想知道是否有一种方法可以在一行中执行此操作而无需创建列表。

我尝试以使用 rbind 完成的方式应用 do.call 的逻辑将多行绑定(bind)在一起,但使用 abind 代替 -
do.call(abind,as.list(c(a,a,a,a,a,a,a,a,a,a))) 

但输出是一个长向量,所以不是我想要的。

任何帮助是极大的赞赏!

最佳答案

您可以使用 replicate ,默认情况下会生成一个列表。要获取数组,请添加 simple = "array"。

replicate(10, a, simplify="array")

, , 1

[,1] [,2]
[1,] 1 3
[2,] 2 4

, , 2

[,1] [,2]
[1,] 1 3
[2,] 2 4

...

, , 9

[,1] [,2]
[1,] 1 3
[2,] 2 4

, , 10

[,1] [,2]
[1,] 1 3
[2,] 2 4

关于arrays - 复制 2 维矩阵以创建 3 维数组(在 R 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37951663/

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