Gibt es eine analoge Funktion zu diff(), die aufeinanderfolgende Elemente teilt, anstatt den Unterschied zu finden?Teilen Sie jedes Element eines Vektors mit dem nächsten
x = c(10,8,4,-1)
some_function(x)
# [1] 1.25 2.00 -4.00
Gibt es eine analoge Funktion zu diff(), die aufeinanderfolgende Elemente teilt, anstatt den Unterschied zu finden?Teilen Sie jedes Element eines Vektors mit dem nächsten
x = c(10,8,4,-1)
some_function(x)
# [1] 1.25 2.00 -4.00
Das glaube ich nicht, dass es so etwas wie die in Basis R. Aber Sie können Ihre eigene Lösung zu schaffen, wie
unlist(sapply(2:length(x), function(i) x[i-1]/x[i]))
# unlist (sort of) takes care of when x has less than 2 elements
ODER
x[-length(x)]/x[-1]
Eine weitere Option mit dplyr
versuchen verwendet lag
library(dplyr)
lag(x)/x
#[1] NA 1.25 2.00 -4.00
Wenn Sie NA
tun
y = lag(x)/x
y[-1]
#[1] 1.25 2.00 -4.00
geschätzt, aber auch, warum bauen Sie Ihre eigenen, wenn es ein möglicherweise zur Verfügung steht? –
Ich würde mich hier nicht mit einer expliziten Schleife befassen, z.B. 'tail (x, -1)/head (x, -1)' oder führe die Indizierung direkt mit '['. – joran