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