gpt4 book ai didi

arrays - r中的2d矩阵到3d堆叠数组

转载 作者:行者123 更新时间:2023-12-02 11:41:35 24 4
gpt4 key购买 nike

我有一个 R 数据框 data,大小为 120000 行 x 5 列。

每300行是在不同时间间隔测量的一帧(即400帧)

行动

我尝试使用array(data, c(300, 5, 400))

预期

通过每 300 行分割 data 并将这 400 个矩阵堆叠在一起,将此数据帧变成 3d 数组。

实际

沿着data第一列向下读取值并将它们放入数组的第一部分。

最佳答案

另一种选择是:

 m1 <- matrix(1:(300*400*5), nrow=300*400, ncol=5)
lst <- lapply(split(seq_len(nrow(m1)),(seq_len(nrow(m1))-1) %/%300 +1),
function(i) m1[i,])

arr1 <- array(0, dim=c(300,5,400))
for(i in 1:400){
arr1[,,i] <- lst[[i]]
}

m1[297:300,]
# [,1] [,2] [,3] [,4] [,5]
#[1,] 297 120297 240297 360297 480297
#[2,] 298 120298 240298 360298 480298
#[3,] 299 120299 240299 360299 480299
#[4,] 300 120300 240300 360300 480300

tail(arr1[,,1],4)
# [,1] [,2] [,3] [,4] [,5]
#[297,] 297 120297 240297 360297 480297
#[298,] 298 120298 240298 360298 480298
#[299,] 299 120299 240299 360299 480299
#[300,] 300 120300 240300 360300 480300

或者按照@Ananda Mahto的建议

library(abind)
arr2 <- abind(lapply(split(seq_len(nrow(m1)),
(seq_len(nrow(m1))-1) %/% 300 + 1), function(x) m1[x, ]), along = 3)

关于arrays - r中的2d矩阵到3d堆叠数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26105477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com