Я пытаюсь построить функцию в R, которая вычисляет процентное изменение между строками на основе любого произвольного индекса, то есть между любой данной строкой и предыдущей или любой данной строкой и n
предыдущими.
perc_change <- function(x,n) {
y <- c()
z <- c()
for (i in 1:length(x)) {
z[i] <- (x[i]/(x[i-n])-1)*100
}
y <- c(rep(NA,n),z[(n+1):length(z)])
y
}
Когда n
равен единице, функция работает правильно:
x <- c(2,3.5,4,6)
perc_change(x,1)
[1] NA 75.00000 14.28571 50.00000
Но когда я изменяю на 2 или другое n
, я получаю эту ошибку:
Error in z[i] <- (x[i]/(x[i - n]) - 1) * 100 :
replacement has length zero
Я просто не могу понять, почему и где лог c моей функции неверен, поэтому я ценю любой комментарий или предложение.