ОК, поэтому я думаю, что здесь есть несколько моментов путаницы.Первый - это написание функции внутри цикла for.Происходит то, что вы переписываете функцию снова и снова, и ваша функция нигде не сохраняет значения вашего уравнения.Во-вторых, вы передаете t в качестве аргумента, но ожидаете, что t будет следовать за циклом for со значением i.Наконец, вы говорите, что хотите, чтобы это было сделано для каждого животного, но значение животного не отображается в вашем коде.
Так что немного сложно увидеть, чего вы пытаетесь достичь здесь.
Основываясь на вашей информации выше, я переписал вашу функцию во что-то, что даст результат для вашего уравнения.
library(tidyverse)
growth <- tibble(week = 1:5,
animal = 1,
weight = c(50,52,55,54,57))
eq <- function(d,t,i){
z <- (d[i+1]-d[i])/(t[i+1]-t[i])*(t-t[i])+d[i]
return(z)
}
test_result <- eq(growth$weight,growth$week,3)
Результаты:
[1] 57 56 55 54 53
Это тот результат, который вы ожидали?Или вы хотели только один результат в неделю на животное?Не могли бы вы привести рабочий пример формулы, которая дала бы один желаемый результат (т.е. результат для животного 1 на 1-й неделе)?