Создание цикла while с вектором в R - PullRequest
0 голосов
/ 27 сентября 2019

Как я могу создать цикл while, который будет проверять каждый элемент последовательности?Цель состоит в том, чтобы увидеть, сколько чисел последовательности чётно.

Ответы [ 3 ]

3 голосов
/ 27 сентября 2019

В R вы должны избегать петель, когда это возможно.В вашем случае есть решение без циклов, если у вас есть вектор с именем v,

sum(v%%2==0)

даст вам то, что вы ищете.v%%2==0 возвращает вектор такой же длины, что и v с TRUE, где чётный, и FALSE, где неровный.Взятие суммы подсчитывает количество или ИСТИННЫЕ элементы, что является вашим ответом.

1 голос
/ 27 сентября 2019

Как сказал @fmarm, использование векторизованных операций всегда предпочтительнее в R. Однако, если вы действительно хотели бы использовать для этого цикл while (или если вы просто используете этот пример для чего-то большегокомплекс), вы можете сделать:

set.seed(1)
myVector <- sample(100)

i <- 0
count <- 0
while(i < length(myVector)){
  i <- i + 1

  if(myVector[i] %% 2 == 0){
    count <- count + 1
  }
}

print(count)
50
0 голосов
/ 27 сентября 2019

Одним из решений, которое могут использовать те, кто обладает базовыми знаниями о методах R, является использование функции ifelse ().Функция ifelse () лучше, чем использование циклов while () или for ().

    set.seed(5)                          # Use 5 to duplicate these results
    n <- sample(1:100, 25, replace = F)  # select 25 random numbers 
    count = 0                            # start variable w/zero value

    sum(ifelse(n %% 2 == 0, c(count = count + 1), 0))

    10

Для каждого значения в n функция ifelse () сначала проверяет, является ли остаток от деления на2 равно 0. Если TRUE, то функция ifelse () увеличивает переменную count на 1. Если в результате деления получается остаток = 1, то функция ifelse () возвращает FALSE, а результаты равны 0, и ничего не происходит.

Наконец, функция sum () суммирует количество единиц, возвращаемых функцией ifelse ().

Здесь сумма четных чисел в n равна 10. Это можно проверить.если необходимо, используя print (n), а затем подсчитывая количество четных чисел в n.

Не забудьте нажать эту кнопку со стрелкой вверх для лучшего ответа.

...