Решение 1 Вам будет лучше использовать функции применения, которые обычно быстрее и удобнее для пользователя. В вашем случае это будет:
some_array <- c(1,4,5,7,8)
some_array[lapply(some_array, "%%", 2) == 0]
Приведенный выше код будет применять функцию модуля 2 к вашему массиву и возвращать только те элементы, которые удовлетворяют условию модуля 2 +=.
Решение 2 Если вы все еще хотите использовать свой подход, то ошибка в том, что вы вычисляете напоминание (и, соответственно, добавление в массив) для индекса (то есть i
). Вместо этого вы должны сделать это для элемента массива (т.е. x[i]
). Правильный код будет:
evens <- function(x){
vector <- c()
for (i in 1:length(x)){
if (x[i] %% 2 == 0){ #this was the first error line
vector <- c(vector, x[i]) ##this was the seconds error line
}
}
vector
}