Доступ и управление элементами списка в матрице списков - PullRequest
0 голосов
/ 20 февраля 2019

Я создал матрицу списков различной длины.Длина списков определяется элементами в матрице одинаковой формы.

Мне нужен доступ к элементам списков.

myMatrix <- matrix(list(), nrow=Sims, ncol=Scens)    

for (i in 1:Scens) {      
  for (j in 1:Sims) {
    bin <- list(c(rlnorm(Frequency_matrix[j, i], meanlog=mu[i], sdlog=sigma[i])))
    if (Frequency_matrix[j,i] == 0){
      myMatrix[j, i] <- list(0)
    } else {
      myMatrix[j, i] <- bin
    }
  }
}

Появляется вывод для элемента [1, 22]:

[1] 1665085 1444953 1393626 1076812 2187266

и относится к списку классов.Однако список имеет длину 1. Похоже, что список становится плоским.

Я не могу получить доступ к элементам этого списка.Я ожидаю, что смогу получить доступ к элементам с помощью:

myMatrix[1,22][[2]]

Используя это, я стремлюсь применить ранговые корреляции к матрице на основе сумм отдельных элементов списка.Однако я должен иметь возможность доступа к каждому элементу списка по отдельности.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Создать простые числовые векторы вместо списков и вместо присвоения myMatrix[i, j] назначить myMatrix[[i, j]] следующим образом:

nr <- 4; nc <- 2
myMatrix <- matrix(list(), nr, nc)
for (i in 1:nr) {
  for (j in 1:nc) {
    myMatrix[[i, j]] <- c(i, j)
  }
}

myMatrix[[3, 2]]
## [1] 3 2
0 голосов
/ 20 февраля 2019

Попробуйте

myMatrix[1,22][[1]][2]

Для второго элемента в векторе, сохраненного в первом элементе списка в первой строке и 22-м столбце вашей матрицы :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...