来自另一个矩阵的多维数组

时间:2019-06-30 21:34:50

标签: arrays r for-loop matrix

假设

t=c(0,0.5,0.7,0.9,1,1.2) and 
v=matrix(1:40, nrow=5, ncol=8)
v
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]    1    6   11   16   21   26   31   36
[2,]    2    7   12   17   22   27   32   37
[3,]    3    8   13   18   23   28   33   38
[4,]    4    9   14   19   24   29   34   39
[5,]    5   10   15   20   25   30   35   40

我想制作一个5x6x4的数组。

array <- array(NA, dim = c(5, 6, 4))

5是行数,6是t的长度,4是数组数。为了创建第一个数组,我只考虑v的前两列,并且对于每个时间点,第一个矩阵的第一个元素由v[1,1]+v[1,2]*t[]填充,v[2,1]+v[2,2]*t[1]是v的第一个元素的值。第一个数组的第一个矩阵,它是array [1,1,1]的值 ,类似地,array [2,1,1] e let user = Auth.auth().currentUser if let user = user { // The user's ID, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, // if you have one. Use getTokenWithCompletion:completion: instead. let uid = user.uid let email = user.email let photoURL = user.photoURL // ... } 对于第二个数组,仅考虑v的第3列和第4列。对于第三个数组,仅考虑v的第5列和第6列,最后,对于第四个数组,考虑v的最后两列。 如果有人可以使用for循环或其他方式来帮助我,我将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:1)

尝试以下嵌套循环:

ary <- array(NA, dim = c(5, 6, 4))

for (i in 1:5) {
  for (j in 1:6) {
    for (k in 1:4) {
      ary[i, j, k] <- v[i, k * 2 - 1] + v[i, k * 2] * t[j]
    }
  }
}