如何在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,9.9,5.0,4.9),dim = c(2,2))
y2 <- array(c(4.6,3.2,5.8,10.2,5.9,4.9,4.5),2))
y3 <- array(c(4.8,5.7,9.2,5.1,5.2,4.6,2.5,9.4,5.8),2))

我想用三种不同的方式切成长方体:

  • A)
Y1 <- matrix(y1,2,6)
Y2 <- matrix(y2,6) 
Y3 <- matrix(y3,6) 
  • B)
Y1 <- cbind(t(y1[,1]),t(y1[,2]))
Y2 <- cbind(t(y2[,t(y2[,2]))
Y3 <- cbind(t(y3[,t(y3[,2]))
  • C)
library(ks)
Y1 <- t(cbind(vec(y1[,vec(y1[,2])))
Y2 <- t(cbind(vec(y2[,vec(y2[,2])))
Y3 <- t(cbind(vec(y3[,vec(y3[,2])))

有没有比手动输入数据更有效的切片长方体的方法

解决方法

一种选择是将其放置在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[,vec(x[,2]))))