R函数重复命令

时间:2014-07-25 21:30:53

标签: r function

我正在运行一个如下所示的命令语句:

t.out=setx(z.out,
            race1=1
            race2=0,
            race3=0,
            influence1=0,
            influence2=0,
            influence3=0,
            influence4=0,
            influence5=0
            influence6=0,
            influence7=0)
s.out=sim(z.out, x=t.out)
ev=s.out$qi[[1]]
ev.mean=mean(ev)
ev.ci = quantile(ev, c(0.025,0.975))
race1.infl0=c(ev.mean,ev.ci)

上面的所有变量都是虚拟变量,我需要为所有可能的种族和影响组合运行此语句,例如,下一个变量如下:

t.out=setx(z.out,
                race1=1
                race2=0,
                race3=0,
                influence1=1,
                influence2=0,
                influence3=0,
                influence4=0,
                influence5=0,
                influence6=0,
                influence7=0 
s.out=sim(z.out, x=t.out)
    ev=s.out$qi[[1]]
    ev.mean=mean(ev)
    ev.ci = quantile(ev, c(0.025,0.975))
    race1.infl1=c(ev.mean,ev.ci)

唯一感兴趣的输出是最后一个有种族和影响力数字的输出。是否有任何机构有关于创建功能的建议,我可以使用它来不手动输入整个组合?任何和所有帮助将不胜感激。

我创建模型的数据集如下所示:

accessibility   race    influence   (Intercept) race1   race2   influence2  influence3  influence4  influence5  influence6  influence7  influence8  influence9  influence10 influence11 influence12
9.211988891 2   2   1   1   0   1   0   0   0   0   0   0   0   0   0   0
5.859253249 2   5   1   1   0   0   0   0   1   0   0   0   0   0   0   0
9.752980715 2   6   1   1   0   0   0   0   0   1   0   0   0   0   0   0
3.574378438 2   1   1   1   0   0   0   0   0   0   0   0   0   0   0   0
6.483454332 2   1   1   1   0   0   0   0   0   0   0   0   0   0   0   0
27.18509232 2   6   1   1   0   0   0   0   0   1   0   0   0   0   0   0
17.72394783 2   6   1   1   0   0   0   0   0   1   0   0   0   0   0   0
1.580419444 2   2   1   1   0   1   0   0   0   0   0   0   0   0   0   0
7.755443719 2   5   1   1   0   0   0   0   1   0   0   0   0   0   0   0
5.636728983 2   6   1   1   0   0   0   0   0   1   0   0   0   0   0   0

1 个答案:

答案 0 :(得分:1)

你可以像这样创建一个函数:

myfun <- function(race1,race2,race3,influence1,influence2,influence3,influence4,influence5,influence6,influence7) {
  t.out=setx(z.out,
             race1=race1
             race2=race2,
             race3=race3,
             influence1=influence1,
             influence2=influence2,
             influence3=influence3,
             influence4=influence4,
             influence5=influence5
             influence6=influence6,
             influence7=influence7)
  s.out=sim(z.out, x=t.out)
  ev=s.out$qi[[1]]
  ev.mean=mean(ev)
  ev.ci = quantile(ev, c(0.025,0.975))
  race.infl=c(ev.mean,ev.ci)
  return(race.infl)

}

然后,您可以创建要在数据框中运行的不同排列,并创建for循环以对数据框中的每一行运行此函数。如果您提供一些示例数据,我可以演示如何执行此操作。