通过以值作为结尾的变量名循环R,并从结果中创建新变量

问题描述

我有24个名为empl_1 -empl_24的变量(例如empl_2; empl_3 ..) 我想在R中编写一个循环,将这个值1-24放在相应的位置,以便使用i = 1-24调用或创建相应的变量。下面的示例显示了我希望在循环中拥有的内容(例如ye1- ye24; ipw_atet_1-ipw_atet_14,依此类推。

ye1_ipw <- empl$empl_1[insample==1]
ipw_atet_1 <- treatweight(y=ye1_ipw,d=treat_ipw,x=x1_ipw,ATET =TRUE,trim=0.05,boot = 2)
ipw_atet_1
ipw_atet_1$se

ye2_ipw <- empl$empl_2[insample==1]
ipw_atet_2 <- treatweight(y=ye2_ipw,boot = 2)
ipw_atet_2
ipw_atet_2$se

ye3_ipw <- empl$empl_3[insample==1]
ipw_atet_3 <- treatweight(y=ye3_ipw,boot = 2)
ipw_atet_3
ipw_atet_3$se

来自我尝试过的Stata环境

 for (i in seq_anlong(empl_list)){ 
  ye[i]_ipw <- empl$empl_[i][insample==1]
ipw_atet_[i]<-treatweight(y=ye[i]_ipw,ATET=TRUE,boot =2
}

但是,这根本不起作用。您是否知道如何通过编写一个不错的循环来解决此问题?非常感谢您的帮助=)

解决方法

您可以尝试使用lapply

result <- lapply(empl[paste0('empl_',1:24)],function(x) 
                treatweight(y = x[insample==1],d = treat_ipw,x = x1_ipw,ATET = TRUE,trim = 0.05,boot = 2))

result将是一个列表输出,将所有24个变量的数据存储在同一对象中,这样就易于管理和处理,而不必使用不同的向量。