Function 如何使在函数内计算的根可用于函数外
我试图执行以下代码,其中主函数(LV)包含另一个函数(fun_sp),用于在每个时间点查找根。根叫做p。根据我的理解,p依赖于一个变量C,它是一个向量,在每个时间点变化,所以p也应该是一个在每个时间点变化的向量。但是当我输出p时,我只得到一个值。我理解错了吗? 任何输入都会有帮助吗Function 如何使在函数内计算的根可用于函数外,function,output,rstudio,root,Function,Output,Rstudio,Root,我试图执行以下代码,其中主函数(LV)包含另一个函数(fun_sp),用于在每个时间点查找根。根叫做p。根据我的理解,p依赖于一个变量C,它是一个向量,在每个时间点变化,所以p也应该是一个在每个时间点变化的向量。但是当我输出p时,我只得到一个值。我理解错了吗? 任何输入都会有帮助吗 library(deSolve) library(rootSolve) ka = 0.1; CL = 0.2; Ke = 0.3; R = 10; KD = 0.1 LV <- function(tim
library(deSolve)
library(rootSolve)
ka = 0.1; CL = 0.2; Ke = 0.3; R = 10; KD = 0.1
LV <- function(time,state, params)
{
C <- state[1]
P <- state[2]
fun_sp <- function(p){p + ((C/R)*p/(p+(KD/R))) -1}
p <<- uniroot.all(fun_sp, c(0,1))
fb <- p/(p+(KD/R))
dC <- fb*ka*C - CL*C + P*CL - Ke*C
dP <- CL*C - P*CL
list(c(dC, dP))
}
state_ini = c(C=100,P=0)
time = c(seq(1, 24 , 1))
fv <- ode(state_ini, time, LV, parms, method = "lsoda", rtol=1e-6, atol=1e-6, verbose=FALSE)
p
fv = as.data.frame(fv)
str(fv)
图书馆(deSolve)
库(rootSolve)
ka=0.1;CL=0.2;Ke=0.3;R=10;KD=0.1
LV变量“p”将在LV函数的每次迭代中被覆盖。好消息是,内部结果可以存储在输出矩阵中,方法是将它们添加到返回值(即列表)中,作为导数向量(在您的案例中是c(dC,dP))后面的附加参数(例如root=p),如下所示:
list(c(dC, dP), root=p)
您的示例可能如下所示,并且全局赋值运算符变量“p”将在LV函数的每次迭代中被覆盖。好消息是,内部结果可以存储在输出矩阵中,方法是将它们添加到返回值(即列表)中,作为导数向量(在您的案例中是c(dC,dP))后面的附加参数(例如root=p),如下所示:
list(c(dC, dP), root=p)
然后,您的示例可能会阅读如下内容,全局赋值运算符也是,我想在后面的另一个函数中使用根(p)。目前,我无法做到这一点。有办法做到这一点吗?另外,我想在后面的另一个函数中使用根(p)。目前,我无法做到这一点。有办法做到这一点吗?非常感谢你,托马斯。。这解决了我想做的事。非常感谢你,托马斯。。这解决了我想做的事情。