r - 如何自动从矩阵中提取值
问题描述
我是 R 的新手,我现在有一个 3 列和 8, 000 行的矩阵,每组 500 行,这意味着 16 组 500*3 矩阵按行堆叠在一起。现在我想取每组矩阵的前300行,把16组300乘3组成一个新矩阵,怎么办?
解决方案
两个相互重叠的 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
推荐阅读
- matlab - 在 S3 上将变量保存为 mat 文件
- c++ - C++ 缓冲区如何工作(关于空格)?
- python - Python中的二进制到十进制转换
- arrays - 调整 Powerpoint Chart ChartData 范围的大小并将 Excel 图表数据值传输为数组
- qt - 检查是否正在绘制 QML 项目
- java - 在 java 中使用堆栈和 post fix 表示法计算 sin、cos、log
- python - 如何将从数据库接收到的 blob 数据转换为 python 中的图像
- javascript - 如何将数据转换成这样的结构
- c# - 在单击按钮之前,keyBinding 不起作用
- java - 亚马逊应用商店违反内容政策