我正在制作一个模拟模型,我认为这个问题有一个简单的解决方法,但我只是不习惯使用数组。假设我有一个数组Array1
,它有3个维度。前两个具有恒定且相等的长度L
,但在任何给定时间,第三个维度的长度可以从1到X.
我希望能够定期对Array1
进行分组,以创建第二个数组Array2
,该数组由最后 {{ 1}}。换句话说,如果Array1
的第三个维度的长度大于Y,那么我只需要Array1
的最后Y张,但是如果它小于Y,我想要所有张{ {1}}。
我知道我可以粗略地使用尾部功能和一点点的结果来解决这个问题:
Array1
但似乎可以采用更优雅的方式来做到这一点。 R中的数组是否等效Array1
?或者有没有办法通过简单的tmp1 = tail(Array1, (L*L*Y))
Array2 = array(tmp1, dim = (L, L, (L*L/length(tmp1))))
逻辑索引生成tail
?或者可能以某种方式使用Array2
函数?
答案 0 :(得分:1)
你这样做过吗?
a <- array(1:(3*4*5), dim=c(3,4,5))
x <- dim(a)[3]
y <- 2
a[, , seq(to=x, len=min(x, y))]
, , 1
[,1] [,2] [,3] [,4]
[1,] 37 40 43 46
[2,] 38 41 44 47
[3,] 39 42 45 48
, , 2
[,1] [,2] [,3] [,4]
[1,] 49 52 55 58
[2,] 50 53 56 59
[3,] 51 54 57 60