Запись для l oop для числового ряда в R - PullRequest
0 голосов
/ 15 марта 2020

Я не эксперт по R, но я пытаюсь понять основы метода for-l oop. Я пытаюсь написать for-l oop, который печатает вывод следующим образом:

1 3 5 7 9 11

Код, который я пишу ниже:

for (i in 1:3) {
  print(i)
  print(i + 2)
  }

Тем не менее, я получаю вывод ниже на основе моего кода:

1 3 2 4 3 5

Кажется, я получаю первый l oop правильно, но когда он ищет i == 2 и i == 3 не генерирует то, что я ожидаю. Что нужно изменить в моем коде, чтобы мои i == 2 и i == 3 были правильными?

Ответы [ 3 ]

2 голосов
/ 15 марта 2020

Я пытаюсь написать for-l oop, который печатает вывод следующим образом:

1 3 5 7 9 11

Это один путь:

for (i in 1:6) {
  print(i * 2 - 1)
}

[1] 1
[1] 3
[1] 5
[1] 7
[1] 9
[1] 11

Если вы хотите напечатать все это в одну строку, то вам сначала нужно сохранить результаты, а затем распечатать.

x <- NULL
for (i in 1:6) {
  x[i] <- (i * 2 - 1)
}
print(x)

[1]  1  3  5  7  9 11
1 голос
/ 15 марта 2020

ОП попросил пересмотреть свой код для получения ожидаемого результата.

Он написал for l oop с 3 итерациями для печати 6 цифр.

Итак, первая итерация должна печатать числа 1 и 3, вторая итерация должна печатать числа 5 и 7, третьи 9 и 11. Каждая итерация увеличивает вывод на 4.

Подход OP можно изменить на вернуть ожидаемый результат:

for (i in 1:3) {
  print(4 * (i-1) + 1)
  print(4 * (i-1) + 3)
}

или, менее подробный

for (i in 1:3) {
  print(4 * i - 3)
  print(4 * i - 1)
}
[1] 1
[1] 3
[1] 5
[1] 7
[1] 9
[1] 11
0 голосов
/ 15 марта 2020

Используя логику c, реализованную Эдвардом, вы можете добиться того же результата с помощью sapply:

sapply(1:6, function(i) print(i * 2 - 1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...