Легко определить свою собственную функцию
rr1 <- function(x) diff(x) / x[-length(x)]
rr1(x)
#[1] 0.02000000 0.01960784 0.01923077 0.01886792 0.01851852
Или с классической for
петлей
rr2 <- function(x) {
r <- numeric(length(x) - 1)
for (i in 1:(length(x) - 1)) r[i] <- (x[i + 1] - x[i]) / x[i]
r
}
rr2(x)
#[1] 0.02000000 0.01960784 0.01923077 0.01886792 0.01851852
И microbenchmark
сравнение обоих методов для большего вектора x
с 10^4
записями
x <- seq(1, 1000, length.out = 10^4)
library(microbenchmark)
res <- microbenchmark(
rr1 = rr1(x),
rr2 = rr2(x))
#Unit: microseconds
# expr min lq mean median uq max neval cld
# rr1 157.596 190.554 518.0451 472.6565 501.5825 9565.411 100 a
# rr2 2057.669 2098.655 2397.8759 2121.2795 2227.8395 10124.874 100 b