varias superponer studio lineas graficos graficas r seq

studio - superponer graficas en r



¿Cuáles son ejemplos de cuándo funciona seq_along, pero seq produce resultados no deseados? (2)

Esto debería hacer la diferencia clara. Básicamente, seq() actúa como seq_along() excepto cuando pasa un vector de longitud 1, en cuyo caso actúa como seq_len() . Si esto alguna vez te muerde, ¡nunca volverás a usar seq() !

a <- c(8, 9, 10) b <- c(9, 10) c <- 10 seq_along(a) # [1] 1 2 3 seq_along(b) # [1] 1 2 seq_along(c) # [1] 1 seq(a) # [1] 1 2 3 seq(b) # [1] 1 2 seq(c) # [1] 1 2 3 4 5 6 7 8 9 10

Probablemente valga la pena señalar que la sample() exhibe un comportamiento similar a la crummy:

sample(a) # [1] 10 8 9 sample(b) # [1] 9 10 sample(c) # [1] 8 7 9 3 4 1 6 10 2 5

¿Cuáles son buenos ejemplos de cuándo seq_along funcionará, pero seq producirá resultados no deseados?

De la documentación de ?seq tenemos:

Tenga en cuenta que distribuye en la clase del primer argumento, independientemente de los nombres de los argumentos. Esto puede tener consecuencias no deseadas si se invoca con un solo argumento con la intención de que esto se tome junto con. Es mucho mejor usar seg_along en ese caso.


Si la entrada a seq es de longitud 1, las salidas entre seq y seq_along serán diferentes

x <- 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

También vemos una diferencia si la entrada es un vector de Fechas

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