【问题标题】:Using for loop to output equations in R使用for循环在R中输出方程
【发布时间】:2023-03-11 10:03:01
【问题描述】:

我目前有一系列方程式,用于对生物系统的隔室进行建模。我希望能够在 for 循环之外为我希望模型拥有的隔间数量设置一个变量 n,然后让函数输出那么多 dn.dt。我很确定我必须在函数末尾将它们作为向量返回,但这是我唯一的线索。下面是我希望我的基本功能在 n = 3 时的用途。

rate <- function(time, state, parms){
  with(as.list(c(state,parms)),{
    dX.dt <- do stuff
    d1.dt <- do different stuff 
    d2.dt <- do same stuff as d1.dt
    d3.dt <- do same stuff as d1.dt
    return(list(c(dX.dt, d1.dt, d2.dt, d3.dt)))})}

我该怎么做呢?

【问题讨论】:

  • 你的问题目前不是特别清楚。当你说do the same stuff as d1.dt。这是随机的会改变的东西,还是用不同的stateparms 做一些事情。我想你要找的是replicate,如果是这样,我会发布答案
  • 是的,d1.dt 到 dn.dt 都将使用相同的状态和参数执行相同的功能。我只是不想输入与主要问题无关的多余代码。系统中不同方程之间的唯一区别是 dX.dt 将是其他隔间的组合。例如:dX.dt

标签: r function for-loop


【解决方案1】:

我想你在replicate之后,你可以通过n作为所需的复制次数。

rate <- function(time, state, parms, n){

  dX.dt <- with(as.list(c(state,parms)), foo(....))
  dn.dt <-  with(as.list(c(state,parms)), replicate(n, foobar(...), simplify = FALSE)

return(c(dX.dt, dn.t))))}

我不确定with(as.list(c(state,parms)) 是否必要,但如果没有一个简单的可重现示例,我无法确定。

【讨论】:

  • 它们是 do stuff 根据您的伪代码的函数(您需要定义它们)
猜你喜欢
  • 2017-05-14
  • 2019-10-24
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
  • 2021-06-14
  • 2016-03-27
相关资源
最近更新 更多