将每个 R for 循环迭代保存在新列表中

2024-01-21

我正在使用dataprepSynth 包的功能(参见https://cran.r-project.org/web/packages/Synth/Synth.pdf https://cran.r-project.org/web/packages/Synth/Synth.pdf).

我想在 R 中循环执行以下命令:

dataprep.out <- dataprep(foo=expenditures,
     predictors=c("pop_tot", "share_yng", "share_old", "unempl", "sign_pop_initiative", "cab_size", "parl_size"),
     predictors.op="mean",
     dependent="exp_welf",
     unit.variable="canton",
     unit.names.variable="canton_abr",
     time.variable="year",
     treatment.identifier=7,
     controls.identifier=c(6, 8, 15, 16),
     time.optimize.ssr=1980:1995,
     time.plot=1980:2007,
     time.predictors.prior=1980:1995
     )

class(dataprep.out)
[1] "list"

到目前为止,一切都很好。结果是一个列表[8]。现在我想循环该命令(注意其中的变化治疗标识符 and 控件标识符:

for (i in c(6,8,15,16)){dataprep(foo=expenditures,
                     predictors=c("pop_tot", "share_yng", "share_old", "unempl", "sign_pop_initiative", "cab_size", "parl_size"),
                     predictors.op="mean",
                     dependent="exp_welf",
                     unit.variable="canton",
                     unit.names.variable="canton_abr",
                     time.variable="year",
                     treatment.identifier=i,
                     controls.identifier=c(6,8,15,16)[c(6,8,15,16) !=i],
                     time.optimize.ssr=1980:1995,
                     time.plot=1980:2007,
                     time.predictors.prior=1980:1995)}

如何将每个迭代保存在它自己的列表中?我想要一个清单,例如dataprep.out"i",对于每次迭代以及每个对象“i”(dataprep.out6;dataprep.out8 等)。

我想我必须首先创建这些对象,以便循环可以将其结果保存到相应的列表中。尽管如此,我仍在努力思考我必须准确创建什么对象。而且我不知道如何告诉 for 循环将每个结果分配给仅在“i”中变化的列表(dataprep.out“i”,其中“i”变化)。


您可以之前创建列表,然后将项目添加到其中,例如

i_list=c(6,8,15,16)
result_list=list()
for (i in seq(i_list)){
  result_list[[i]]=dataprep(...)}

但你需要改变标识符

treatment.identifier=i_list[[i]],
controls.identifier=c(6,8,15,16)[c(6,8,15,16) !=i_list[[i]]]

但 lapply 变体正如 @zx8754 所说的更好

result_list=lapply(i_list,function(i) dataprep(...))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将每个 R for 循环迭代保存在新列表中 的相关文章

随机推荐