So che non è la prassi migliore in R utilizzare il ciclo for
perché non ha prestazioni migliorate. Per quasi tutti i casi esiste una funzione della famiglia *apply
che risolve i nostri problemi.Loop in R - È necessario utilizzare l'indice, ad ogni modo per evitare 'per'?
Tuttavia, sto affrontando una situazione in cui non vedo una soluzione alternativa.
ho bisogno di calcolare la variazione percentuale per i valori consecutivi:
pv[1] <- 0
for(i in 2:length(x)) {
pv[i] <- (x[i] - x[i-1])/x[i-1]
}
Quindi, come potete vedere, devo usare sia l'elemento x[i]
, ma anche l'elemento x[i-1]
. Usando le funzioni *apply
, vedo solo come utilizzare x[i]
. Posso comunque evitare i loop for
?
Bella risposta DWin. In realtà non sapevo che cosa stava realizzando il poster, ma sono d'accordo al 100% sulla vettorizzazione.+1 –
Risposta molto bella! Non sapevo che l'approccio vettoriale fosse il più veloce, pensavo fosse "lapply". Ma nell'ultima riga di codice, non dovrebbe essere 'x [-1] - x [-length (x)]'? –
@ JoãoDaniel: Sì, dovrebbe. Modifica applicata. –