Al realizar una comparación booleano entre dos vectores en R, la "expectativa" es que ambos vectores son de la misma longitud, de manera que R se puede comparar cada elemento correspondiente a su vez.
R tiene una característica muy querida (u odiada) llamada recycling, por lo que en muchas circunstancias si intenta hacer algo donde R normalmente esperaría que los objetos tengan la misma longitud, extenderá automáticamente, o reciclará, el más corto objeto para obligar a ambos objetos a ser de la misma longitud.
Si el objeto más largo es un múltiplo del más corto, esto equivale simplemente a repetir el objeto más corto varias veces. A menudo, los programadores de R se aprovecharán de esto para hacer las cosas de forma más compacta y con menos tipeo.
Pero si no son múltiplos, a R le preocupará que haya cometido un error, y tal vez no haya querido realizar esa comparación, de ahí la advertencia.
Explora mismo con el siguiente código:
> x <- 1:3
> y <- c(1,2,4)
> x == y
[1] TRUE TRUE FALSE
> y1 <- c(y,y)
> x == y1
[1] TRUE TRUE FALSE TRUE TRUE FALSE
> y2 <- c(y,2)
> x == y2
[1] TRUE TRUE FALSE FALSE
Warning message:
In x == y2 :
longer object length is not a multiple of shorter object length