首页 > 解决方案 > 如何自动从矩阵中提取值

问题描述

我是 R 的新手,我现在有一个 3 列和 8, 000 行的矩阵,每组 500 行,这意味着 16 组 500*3 矩阵按行堆叠在一起。现在我想取每组矩阵的前300行,把16组300乘3组成一个新矩阵,怎么办?

标签: r

解决方案


两个相互重叠的 6 * 2 矩阵:

m <- matrix(1:24, ncol = 2)
#      [,1] [,2]
# [1,]    1   13
# [2,]    2   14
# [3,]    3   15
# [4,]    4   16
# [5,]    5   17
# [6,]    6   18
# [7,]    7   19
# [8,]    8   20
# [9,]    9   21
#[10,]   10   22
#[11,]   11   23
#[12,]   12   24

使其成为一个数组:

a <- array(m, c(6, 2, 2))
a <- aperm(a, c(1, 3, 2))

每个矩阵的前三行:

a[1:3,,]
#, , 1
#
#     [,1] [,2]
#[1,]    1   13
#[2,]    2   14
#[3,]    3   15
#
#, , 2
#
#     [,1] [,2]
#[1,]    7   19
#[2,]    8   20
#[3,]    9   21

如果您需要矩阵,请使用它:

matrix(aperm(a[1:3,,], c(1, 3, 2)), ncol = 2)
#     [,1] [,2]
#[1,]    1   13
#[2,]    2   14
#[3,]    3   15
#[4,]    7   19
#[5,]    8   20
#[6,]    9   21

推荐阅读