从 R 中的子矩阵创建矩阵
Make a matrix from submatrix in R
我需要在 R
中创建一个矩阵,其元素来自我之前定义的矩阵。
比如我有4个矩阵,
w <- matrix(c(1,2,3,4),2,2)
x <- matrix(c(5,6,7,8),2,2)
y <- matrix(c(9,10,11,12),2,2)
z <- matrix(c(13,14,15,16),2,2)
那么,新矩阵应该是一个4X4
矩阵,w
是一个[1:2,1:2]
元素,x
是一个[1:2,3:4]
元素,y
是一个 [3:4,1:2]
元素,z
是一个 [3:4,3:4]
元素。
我怎样才能快速做到这一点?
我们可以创建一个 array
然后循环遍历第三个维度,然后 rbind
它。
ar1 <- array(c(w, x, y,z), dim=c(2, 4,2))
do.call(rbind,lapply(seq(dim(ar1)[3]), function(i) ar1[,,i]))
# [,1] [,2] [,3] [,4]
#[1,] 1 3 5 7
#[2,] 2 4 6 8
#[3,] 9 11 13 15
#[4,] 10 12 14 16
或者如评论中提到的@thelatemail
apply(array(c(w,x,y,z), dim=c(2,4,2)), 2, I)
其中 I
代表 inhibit interpretation
或使用 identity
代替 I
我需要在 R
中创建一个矩阵,其元素来自我之前定义的矩阵。
比如我有4个矩阵,
w <- matrix(c(1,2,3,4),2,2)
x <- matrix(c(5,6,7,8),2,2)
y <- matrix(c(9,10,11,12),2,2)
z <- matrix(c(13,14,15,16),2,2)
那么,新矩阵应该是一个4X4
矩阵,w
是一个[1:2,1:2]
元素,x
是一个[1:2,3:4]
元素,y
是一个 [3:4,1:2]
元素,z
是一个 [3:4,3:4]
元素。
我怎样才能快速做到这一点?
我们可以创建一个 array
然后循环遍历第三个维度,然后 rbind
它。
ar1 <- array(c(w, x, y,z), dim=c(2, 4,2))
do.call(rbind,lapply(seq(dim(ar1)[3]), function(i) ar1[,,i]))
# [,1] [,2] [,3] [,4]
#[1,] 1 3 5 7
#[2,] 2 4 6 8
#[3,] 9 11 13 15
#[4,] 10 12 14 16
或者如评论中提到的@thelatemail
apply(array(c(w,x,y,z), dim=c(2,4,2)), 2, I)
其中 I
代表 inhibit interpretation
或使用 identity
代替 I