Не могу заставить функцию работать, целое число (0) - PullRequest
1 голос
/ 13 октября 2019

Я пытаюсь подсчитать или суммировать число 1 и 0 в функции, которую я создал. Но по какой-то причине он продолжает возвращать класс (null) или целое число (0). Что я делаю не так и может кто-нибудь объяснить, пожалуйста?

set.seed(4233) # set the random seed for reproducibility
vec1 <- sample(x = 0:9, size = 15, replace = TRUE)
vec1
test1 <- function(n){
  for (i in n)
    if (i %% 2 == 0){
      print(1)
    } else {
      print(0)
    }
}
testing <- test1(vec1)
length(which(testing == 1))

1 Ответ

1 голос
/ 13 октября 2019

Здесь проблема в том, что функция return ничего. Это просто print значение. Вместо этого мы можем сохранить вывод в vector

test1 <- function(n){
  v1 <- numeric(length(n)) # initialize a vector of 0s to store the output
  for (i in seq_along(n)) { # loop through the sequence of vector
   if (n[i] %% 2 == 0){
     v1[i] <- 1   # replace each element of v1 based on the condition

   } else {
     v1[i] <- 0
     }

    }
   v1  # return the vector
 }

test1(vec1)
#[1] 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1

Обратите внимание, что для этого не требуется for петля

as.integer(!vec1 %%2)
#[1] 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...