Добавьте два целых числа к каждому элементу списка в цикле for - PullRequest
0 голосов
/ 05 мая 2018

пожалуйста, дайте мне знать, если этот вопрос слишком общий.

Я пытаюсь реализовать цикл for с вложенным циклом for. Каждый раз, когда цикл for выполняется, он либо print два целочисленных значения, либо next на следующей итерации.

В результате у меня есть выходы из цикла for, который выглядит следующим образом:

[1] 10 57
[1] 10 58
[1] 10 59
[1] 10 63
[1] 10 64
[1] 10 67
[1] 10 68
[1] 10 69
[1] 10 70
[1] 10 71
[1] 10 72
[1] 10 75
[1] 10 76
[1] 10 77
[1] 10 78
[1] 10 79
[1] 10 80
[1] 10 82
[1] 10 86
[1] 10 87
[1] 10 90

Мне было интересно, каковы лучшие практики для вставки этих пар целых чисел в списки. Поскольку существует цикл for с итератором i, вложенным в цикл for с итератором j, я не могу просто написать:

list[[i]] <- c(i, j)

1 Ответ

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

Say indx - вектор с некоторыми случайными значениями:

[1] 58 61 67 69 70 72 78 79 84 85

Для цикла я бы написал:

for(i in 1:3){
  for(j in indx){
    print(c(i, j))
  }
}

Будет производить следующий вывод (без присвоения его объекту):

[1]  1 58
[1]  1 61
[1]  1 67
[1]  1 69
[1]  1 70
[1]  1 72
[1]  1 78
[1]  1 79
[1]  1 84
[1]  1 85
[1]  2 58
[1]  2 61
...
[1]  3 84
[1]  3 85

Если вы пытаетесь сохранить его в векторе, этот код работает для вас:

myls <- vector()
for(i in 1:3){
  for(j in indx){
      myls <- c(myls, c(i, j))
  }
}

EDIT Основываясь на дополнительном комментарии OP, я хотел показать вам другой способ получения списка, добавив каждую комбинацию i и j в качестве элемента списка:

indx <- c(58, 61, 67, 69, 70, 72, 78, 79, 84, 85)
myls <- list()
for(i in 1:3){
  for(j in indx){
      myls <- c(myls, list(c(i, j)))
  }
}

Ваша myls переменная теперь является списком:

myls[1:3]

[[1]]
[1]  1 58

[[2]]
[1]  1 61

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