Все еще довольно плохо знаком с R, поэтому я не уверен, что делаю неправильно. Я пытаюсь применить эту функцию к вектору для вычисления% остатка на основе начального значения:
residual <- function(vec, offset, lngth){
denom <- 1
res_vec <- NULL
for (i in 1:lngth){
if(i == 1 | i %% (offset) != 0)
{
x <- vec[i] * 100/vec[denom]
res_vec <- append(res_vec, x)
}
else
{
denom <- denom + offset
x <- vec[i] * 100/vec[denom]
res_vec <- append(res_vec, x)
}
}
res_vec
}
Я использую sapply. Например, если мой вектор:
dv <- c(88, 84, 80, 90, 88, 85)
И я использую sapply
x <- sapply(dv, residual, offset = 3, lngth = 6)
Я бы хотел получить этот вектор:
100, 95, 91, 100, 98, 94
Но вместо этого Я либо получаю следующее:
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 100 100 100 100 100 100
[2,] NA NA NA NA NA NA
[3,] NA NA NA NA NA NA
[4,] NA NA NA NA NA NA
[5,] NA NA NA NA NA NA
[6,] NA NA NA NA NA NA
Что-то не так с моей функцией, или я что-то не так делаю, когда пытаюсь ее вызвать? Я получил это работать нормально в C ++.
Спасибо!