r - 如何在 R 中以不同的方式对多维数据进行切片
问题描述
我在多个维度数组 (2,3,2) 中有以下数据(即每个观察值都是一个长方体,由两个大小为 2x3 的矩阵组成)。这里观察的数量是 3。
y1 <- array(c(4.5,2.7,5.6,9.5,5.4,5.5,4.7,2.9,5.6,9.9,5.0,4.9), dim = c(2,3,2))
y2 <- array(c(4.6,3.2,5.8,10.2,5.4,5.9,4.9,2.9,5.9,9.9,5.5,4.5), dim = c(2,3,2))
y3 <- array(c(4.8,2.9,5.7,9.2,5.1,5.2,4.6,2.5,5.4,9.4,5.4,5.8), dim = c(2,3,2))
我想以三种不同的方式切割这个长方体:
- 一种)
Y1 <- matrix(y1,2,6)
Y2 <- matrix(y2,2,6)
Y3 <- matrix(y3,2,6)
- 二)
Y1 <- cbind(t(y1[,,1]),t(y1[,,2]))
Y2 <- cbind(t(y2[,,1]),t(y2[,,2]))
Y3 <- cbind(t(y3[,,1]),t(y3[,,2]))
- C)
library(ks)
Y1 <- t(cbind(vec(y1[,,1]),vec(y1[,,2])))
Y2 <- t(cbind(vec(y2[,,1]),vec(y2[,,2])))
Y3 <- t(cbind(vec(y3[,,1]),vec(y3[,,2])))
有没有比手动输入数据更有效的切割长方体的方法?
解决方案
一个选项是将它放在 a 中list
并执行一次
lst1 <- list(y1, y2, y3)
lapply(lst1, matrix, nrow = 2, ncol = 6)
lapply(lst1, function(x) cbind(t(x[,,1]),t(x[,,2])))
对于第三种情况
lapply(lst1, function(x) t(cbind(vec(x[,,1]),vec(x[,,2]))))
推荐阅读
- bash - 如何使用 wget 下载 URL 列表并根据第二个数据字段对它们进行排序?
- json - flask-cors 没有解析来自 ajax 客户端的数据
- c++ - 我如何知道哪个上下文处于活动状态?
- c++ - 方法模板作为函子
- python - 如何通过超时通过 if 语句提问
- indexeddb - 如何在 where 子句之后获取复合索引的一部分?
- tsql - Capturing @@error and @@rowcount from a single query
- vb.net - 在数据库中插入一行后更新列表框
- orientdb - Gremlin:投影所有标签和每个标签的数量
- pandas - 熊猫数据透视表给我聚合错误