У меня проблема в следующем: у меня есть два кадра данных (parameters
и amounts
).
> head(parameters)
Ka V1 V2 Q CL
1 5.960224 20.46632 90.48670 5.5 68.192196
2 1.176143 16.05779 132.44959 5.5 6.421357
3 1.324476 34.91569 42.96544 5.5 20.761933
4 2.649055 21.55833 111.89387 5.5 6.868612
5 1.495101 32.97900 140.82672 5.5 4.340567
6 2.807148 29.33883 206.71401 5.5 8.756406
>head(amounts)
Depot Central Peripheral
1 10 0 0
2 10 0 0
3 10 0 0
4 10 0 0
5 10 0 0
6 10 0 0
Я хотел бы передать каждую строку parameters
& amounts
в ODE-решатель с именем ode
, входящий в пакет deSolve
. Я пришел со следующим ответом, используя for
l oop, он прекрасно работает, но это занимает много времени, когда число циклов велико (то есть, более 500 итераций). Я хотел бы заменить for
l oop на apply
-подобную функцию. Это l oop:
Central_concs <- vector()
for(i in 1:nrow(parameters)){
n_a <- names(amounts)
amounts_i <- as.numeric(amounts[i, ])
names(amounts_i) <- n_a
parameters_i <- parameters[i, ]
out <- ode(y = amounts_i, times = times, func = TwoComp, parms = parameters_i)
Central_concs <- cbind(Central_concs, out)
}
Извлечение и переименование имен - это просто проблема с функцией ode
, не беспокойтесь об этом. TwoComp
, аргумент, переданный ode
, - это просто функция, содержащая систему дифференциальных уравнений.
Я пытался применить, но у меня ничего не получилось. Любая помощь приветствуется.