在r中的函数内使用随机变量

时间:2017-05-14 12:11:10

标签: r

我在r中运行模拟,这是我使用的主要功能:

runBothArms<-function(HFincidence,r,cost,util,mod,matProb,baseCaseMat,HazardR,
       allCauseMortality,iniAge,noInfluenceYear,noRecurencYear,HFduration,s2){
          res<-foreach(n=1:100000,.combine = rbind) %dopar% 
                 mainSim(HFincidence,r,cost,util,mod,matProb,baseCaseMat,HazardR,
      allCauseMortality,iniAge,noInfluenceYear,noRecurencYear,HFduration,s2)
          return(calcRes(res,cost,mod))
          }

现在是我进行敏感度分析的时候了。假设我希望r在0-5%之间变化,我怎么能用我目前的功能呢?因为如果我发送到函数r<-sample(0:5,1),它只会采样一个数字并用它运行整个模拟。

1 个答案:

答案 0 :(得分:0)

正如@Ken S.建议的那样,你需要循环你的函数来运行多个模拟。考虑lapply返回函数返回对象的列表,其长度等于输入向量,这里是sample(0:5, 5)

下面, calcResults 将是每个迭代模拟的5个列表,其中 r 现在在循环中更改为循环变量。请务必将 param 值替换为实际值:

calcResults <- lapply(sample(0:5, 5), function(r)
   runBothArms(hparam, r, cparam, uparam, mparam, mPparam, bCparam, HRparam,
               aparam, iparam, nIparam, nRparam, HFparam, s2param))