【发布时间】:2021-02-06 15:19:46
【问题描述】:
我正在尝试使用 for 循环创建一组动态命名的新对象(例如,temp2015),并存储动态值 - 特别是其他对象的名称(例如,Y2015)和使用的值在 for 循环中(例如,2015) - 在动态命名的新对象中。
我不确定为什么下面的代码不起作用。
Y2015 = data.frame(VAR1 = 6:10, VAR2 = 1:5)
Y2016 = data.frame(VAR1 = 7:11, VAR2 = 11:15)
Y2017 = data.frame(VAR1 = 7:11, VAR3 = 5:9, VAR4 = 4:8)
for (i in 2015:2017) {
paste0("temp", i) <- cbind(names(paste0("Y", i)), i)
}
all <- rbind(temp2015, temp2016, temp2017)
下面的代码得到了我想要的结果(特别是对象all_manual 中的数据内容),但这是在一个非常小的样本数据集上手动完成的,并不是一个长期的解决方案。
Y2015 = data.frame(VAR1 = 6:10, VAR2 = 1:5)
Y2016 = data.frame(VAR1 = 7:11, VAR2 = 11:15)
Y2017 = data.frame(VAR1 = 7:11, VAR3 = 5:9, VAR4 = 4:8)
all_manual = data.frame(file = c('VAR1', 'VAR2', 'VAR1', 'VAR2', 'VAR1', 'VAR3', 'VAR4'),
year = c(2015, 2015, 2016, 2016, 2017, 2017, 2017))
我非常感谢任何有关如何使其工作的建议或想法。
【问题讨论】:
-
您要求的是使用
assign和get,您会发现很多反对使用这些功能:它们几乎总是表明设计不佳。由于帧看起来都一样,我建议您考虑使用list of frames:因为您可能对每个帧执行相同或相似的操作,所以使用lapply可以大大简化代码的可维护性/灵活性.
标签: r