Цикл массива в R - PullRequest
0 голосов
/ 24 мая 2018

Предположим, что следующий код предназначен для выполнения следующих действий: Для различных значений g я хочу создать массив с таблицами, которые заполняются из результатов функции Vijk.Так что получается, что для g=1 алгоритм запускается и заполняет VijkArray, затем я хочу вставить этот массив в result.1[3,2,1:3].Для g=2 та же процедура, но теперь заполняем `result.1 [3,2,4: 6] и т. Д. Моя проблема в том, как сделать так, чтобы этот последний шаг состоялся, потому что сейчас происходит то, что первые 3 частииз массива продолжают перезаписываться, я понимаю почему, но не смог преодолеть его.

g=c(0.65,0.70,0.75,0.80,0.85)
result.1 <- array(0, dim = c(3,2,15))
VijkArray <- array(0,dim=c(3,2,3))
for(t in 1:length(g)){

  for (i in 1:3) {
    for (j in 1:3) {
      for (q in 1:2) {
        x <-xnew1[i,q,j]
        VijkArray[i,q,j]<-Vijk(x,q) #call Vijk function and update the criterion value accordingly
        result.1[i,q,j]<-VijkArray[i,q,j]
      }
    }
  }
}

Пример .Rdata среды для использования

>result.1

, , 1


          [,1]       [,2]
[1,]  0.000000  0.5285917
[2,] -1.433881 -0.5823365
[3,] -1.866261 -1.1893313

, , 2

           [,1]       [,2]
[1,] -0.5823365  0.4061262
[2,] -1.6576946 -0.9137839
[3,] -2.0629455 -1.4338807

, , 3

           [,1]       [,2]
[1,] -0.9137839  0.2588162
[2,] -1.8662608 -1.1893313
[3,] -2.2500000 -1.6576946

, , 4

     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    0

, , 5

     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    0

, , 6

     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    0

, , 7

     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    0

, , 8

     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    0

, , 9

     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    0

, , 10

     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    0

, , 11

     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    0

, , 12

     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    0

, , 13

     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    0

, , 14

     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    0

, , 15

     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    0

Вы будетеобратите внимание, что все результаты продолжают отображаться в первых 3 таблицах массива.Таким образом, для 1-го g должны быть заполнены первые 3 таблицы, затем для второго g должны быть заполнены таблицы 4,5 и 6 и т. Д.

1 Ответ

0 голосов
/ 24 мая 2018

Обновление для соответствия ожидаемому выводу отредактированного вопроса:

g=c(0.65,0.70,0.75,0.80,0.85)
VijkArray <- array(0,dim=c(3,2,3))
result.1 <- array(0, dim = c(3,2,3*length(g)))
for(t in 1:length(g)){
  for (i in 1:3) {
    for (j in 1:3) {
      for (q in 1:2) {
        x <-xnew1[i,q,j]
        VijkArray[i,q,j]<-Vijk(x,q) #call Vijk function and update the criterion value accordingly
      }
    }
  }
  indices <- ((t-1)*3+1):(t*3)
  result.1[,,indices] <- VijkArray 
}

Вывод:

print(result.1)
>, , 1
>
>          [,1]       [,2]
>[1,]  0.000000  0.5285917
>[2,] -1.433881 -0.5823365
>[3,] -1.866261 -1.1893313
>
>, , 2
>
>           [,1]       [,2]
>[1,] -0.5823365  0.4061262
>[2,] -1.6576946 -0.9137839
>[3,] -2.0629455 -1.4338807
>
>, , 3
>
>           [,1]       [,2]
>[1,] -0.9137839  0.2588162
>[2,] -1.8662608 -1.1893313
>[3,] -2.2500000 -1.6576946
>
>, , 4
>
>          [,1]       [,2]
>[1,]  0.000000  0.5032942
>[2,] -1.433881 -0.5823365
>[3,] -1.866261 -1.1893313
>
>, , 5
>
>           [,1]       [,2]
>[1,] -0.5823365  0.3789291
>[2,] -1.6576946 -0.9137839
>[3,] -2.0629455 -1.4338807
>
>, , 6
>
>           [,1]       [,2]
>[1,] -0.9137839  0.2332582
>[2,] -1.8662608 -1.1893313
>[3,] -2.2500000 -1.6576946
>
>, , 7
>
>          [,1]       [,2]
>[1,]  0.000000  0.4792073
>[2,] -1.433881 -0.5823365
>[3,] -1.866261 -1.1893313
>
>, , 8
>
>           [,1]       [,2]
>[1,] -0.5823365  0.3535534
>[2,] -1.6576946 -0.9137839
>[3,] -2.0629455 -1.4338807
>
>, , 9
>
>           [,1]       [,2]
>[1,] -0.9137839  0.2102241
>[2,] -1.8662608 -1.1893313
>[3,] -2.2500000 -1.6576946
>
>, , 10
>
>          [,1]       [,2]
>[1,]  0.000000  0.4562733
>[2,] -1.433881 -0.5823365
>[3,] -1.866261 -1.1893313
>
>, , 11
>
>           [,1]       [,2]
>[1,] -0.5823365  0.3298770
>[2,] -1.6576946 -0.9137839
>[3,] -2.0629455 -1.4338807
>
>, , 12
>
>           [,1]       [,2]
>[1,] -0.9137839  0.1894646
>[2,] -1.8662608 -1.1893313
>[3,] -2.2500000 -1.6576946
>
>, , 13
>
>          [,1]       [,2]
>[1,]  0.000000  0.4344368
>[2,] -1.433881 -0.5823365
>[3,] -1.866261 -1.1893313
>
>, , 14
>
>           [,1]       [,2]
>[1,] -0.5823365  0.3077861
>[2,] -1.6576946 -0.9137839
>[3,] -2.0629455 -1.4338807
>
>, , 15
>
>           [,1]      [,2]
>[1,] -0.9137839  0.170755
>[2,] -1.8662608 -1.189331
>[3,] -2.2500000 -1.657695
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...