[英]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.identifier和controls.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.