Sé que no es la mejor práctica en R utilizar el bucle for
porque no tiene un rendimiento mejorado. Para casi todos los casos, existe una función de la familia *apply
que resuelve nuestros problemas.Loops in R - ¿Necesita utilizar el índice, de todos modos para evitar 'para'?
Sin embargo, estoy frente a una situación en la que no veo una solución alternativa.
necesito para calcular la variación ciento para valores consecutivos:
pv[1] <- 0
for(i in 2:length(x)) {
pv[i] <- (x[i] - x[i-1])/x[i-1]
}
Por lo tanto, como se puede ver, tengo que usar tanto el elemento x[i]
, sino también el elemento x[i-1]
. Al usar las funciones *apply
, solo veo cómo usar el x[i]
. ¿Hay alguna manera de evitar los for
bucles?
Buena respuesta DWin. No sabía realmente qué estaba logrando el cartel, pero estoy 100% de acuerdo con la vectorización.+1 –
Muy buena respuesta! No sabía que el enfoque vectorizado era el más rápido, pensé que 'lapply' era. Pero en la última línea de código, ¿no debería ser 'x [-1] - x [-length (x)]'? –
@ JoãoDaniel: Sí, debería. Editar aplicado –