Was sind gute Beispiele dafür, wann seq_along
funktioniert, aber seq
unbeabsichtigte Ergebnisse erzielt werden?
Aus der Dokumentation von haben ?seq
wir:
Beachten Sie, dass die Klasse des ersten Arguments unabhängig von den Argumentnamen ausgelöst wird. Dies kann unbeabsichtigte Konsequenzen haben, wenn nur ein Argument aufgerufen wird, mit dem dies verstanden werden soll
along.with
:seq_along
In diesem Fall ist es viel besser, es zu verwenden .
diag
auch.sample()
dann oder nur zu verwendenas.numeric(sample(as.character(c)))
?safeSample <- function(x) if(length(x) == 1) x else sample(x)
. (Probieren Sie es aus mitsafeSample(4:5); safeSample(5)
.)Wenn der Eingang zu seq die Länge 1 hat, sind die Ausgänge zwischen
seq
undseq_along
unterschiedlichx <- 5 for(i in seq(x)){ print(x[i]) } #[1] 5 #[1] NA #[1] NA #[1] NA #[1] NA for(i in seq_along(x)){ print(x[i]) } #[1] 5
Wir sehen auch einen Unterschied, wenn die Eingabe ein Vektor von Daten ist
x <- Sys.Date() + 1:5 seq(x) #Error in seq.Date(x) : 'from' must be of length 1 seq_along(x) #[1] 1 2 3 4 5
quelle