繁体   English   中英

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

[英]Save every R for loop iteration in a new list

我正在使用 Synth 包的dataprep功能(请参阅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]。 现在我想循环命令(注意treatment.identifiercontrols.identifier的变化:

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]]]

但是 @zx8754 的 lapply 变体说得更好

result_list=lapply(i_list,function(i) dataprep(...))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM