For-Loop в For-Loop, кажется, пропускает итерации (r) - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь запустить цикл for в цикле for, однако он не ведет себя так, как я ожидаю.Я ожидал бы, что он будет циклически проходить по элементам во «внутреннем» цикле, а затем переключаться на следующий элемент во «внешнем» цикле и повторяться.

Например,

Letters = c('AA', 'BB', 'CC', 'DD')

for(i in 1:length(Letters)) {

  LetDup <- Letters

  for(i in 1:length(LetDup)) {

    Combined <- paste0(Letters[i], ' vs ', LetDup[i])

    print(Combined)

  }
}

Я быложидая получить

AA vs AA
AA vs BB
AA vs CC
AA vs DD
BB vs AA 
BB vs BB
.....

Как я могу указать, что это то, что я хотел бы, и если бы кто-то мог предложить простое объяснение того, что я на самом деле просил это сделать, это также помогло бы.

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Если вы настаиваете на использовании циклов, примите комментарий @ Dason и сделайте следующее:

for(i in 1:length(Letters)) {
  for(j in 1:length(Letters)) {
    Combined <- paste0(Letters[i], ' vs ', Letters[j])
    print(Combined)
    }
}
0 голосов
/ 12 апреля 2019

Мы можем использовать expand.grid или CJ (из data.table), а затем сделать paste

library(data.table)
CJ(Letters, Letters)[, paste(V1, 'vs', V2)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...