Interpretacja ostrzeżenia „warunek ma długość> 1” z funkcji `if`

Mam tablicę:

a <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

i chciałbym wdrożyć następującą funkcję:

w<-function(a){
  if (a>0){
    a/sum(a)
  }
  else 1
}

Ta funkcja chce sprawdzić, czy istnieje jakaś wartośća większy niż 0, a jeśli tak, podziel każdy element przez sumę sumy.

W przeciwnym razie należy tylko zarejestrować 1.

Otrzymuję następujący komunikat ostrzegawczy:

 Warning message:
 In if (a > 0) { :
 the condition has length > 1 and only the first element will be used

Jak mogę poprawić tę funkcję?

questionAnswers(5)

yourAnswerToTheQuestion