Wenn Sie einen booleschen Vergleich zwischen zwei Vektoren in R durchführen, wird erwartet, dass beide Vektoren gleich lang sind, so dass R jedes entsprechende Element nacheinander vergleichen kann.
R hat eine viel geliebte (oder gehasste) Funktion namens Recycling Wenn Sie versuchen, etwas zu tun, bei dem R normalerweise erwarten würde, dass die Objekte gleich lang sind, wird das kürzere Objekt automatisch verlängert oder recycelt, damit beide Objekte die gleiche Länge haben.
Wenn das längere Objekt ein Vielfaches des kürzeren ist, läuft dies darauf hinaus, dass das kürzere Objekt einfach mehrmals wiederholt wird. Oft machen sich R-Programmierer dies zunutze, um Dinge kompakter und mit weniger Tipparbeit zu erledigen.
Wenn es sich aber nicht um Vielfache handelt, wird R befürchten, dass Sie einen Fehler gemacht haben und den Vergleich vielleicht gar nicht durchführen wollten, daher die Warnung.
Erkunden Sie sich selbst mit dem folgenden Code:
> 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