La interpretación de "condición tiene longitud> 1" advertencia de la función `if`

Tengo una matriz:

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)

y me gustaría implementar la siguiente función:

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

Esta función quisiera comprobar si hay algún valor ena mayor que 0 y si es así, divida cada elemento por la suma del total.

De lo contrario solo debería grabar 1.

Recibo el siguiente mensaje de advertencia:

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

¿Cómo puedo corregir la función?

Respuestas a la pregunta(5)

Su respuesta a la pregunta