Интерпретация предупреждения «условие имеет длину> 1» из функции «если»

У меня есть массив:

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)

и хотел бы реализовать следующую функцию:

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

Эта функция хотела бы проверить, есть ли какое-либо значение вa больше 0, и если да, то разделите каждый элемент на сумму суммы.

В противном случае он должен просто записать 1.

Я получаю следующее предупреждение:

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

Как я могу исправить функцию?

Ответы на вопрос(5)

Ваш ответ на вопрос