Wiem, że nie jest najlepszą praktyką w R używania pętli for
, ponieważ nie ma ona lepszej wydajności. W prawie wszystkich przypadkach istnieje funkcja rodziny *apply
, która rozwiązuje nasze problemy.Pętle w R - Musisz mimo wszystko użyć indeksu, aby uniknąć "za"?
Jednak mam do czynienia z sytuacją, w której nie widzę obejścia.
muszę obliczyć procent wariancji dla kolejnych wartości:
pv[1] <- 0
for(i in 2:length(x)) {
pv[i] <- (x[i] - x[i-1])/x[i-1]
}
Więc, jak widać, muszę używać zarówno element x[i]
, ale także element x[i-1]
. Korzystając z funkcji *apply
, po prostu widzę, jak korzystać z x[i]
. Czy mimo to mogę ominąć pętle for
?
Dobra odpowiedź DWin. Nie wiedziałem dokładnie, co osiągnął plakat, ale jestem w 100% zgodna co do wektoryzacji.+1 –
Bardzo ładna odpowiedź! Nie wiedziałem, że wektoryzacja jest najszybsza, pomyślałem "lapply". Ale w ostatnim wierszu kodu nie powinno być "x [-1] - x [-length (x)]"? –
@ JoãoDaniel: Tak, powinno. Edytuj zastosowane. –