如何在R中将dataframe重复堆叠100次并添加迭代编号列?
重复堆叠数据框并添加迭代标识的实现方案
方法一:使用 dplyr
无需手动重复输入数据框100次,只需生成包含100份目标数据框的列表,再通过 bind_rows() 合并并指定 .id 参数添加迭代标识:
library(dplyr) # 生成100份iris的列表,合并后添加迭代编号列 stacked_iris_dplyr <- bind_rows(rep(list(iris), 100), .id = "iteration_id")
方法二:使用 data.table
你提到的思路完全可行——将数据框重复存入列表100次,再用 rbindlist() 的 idcol 参数实现需求,这种方法在处理大规模数据时性能更优:
library(data.table) # 生成100份iris的列表,合并后添加迭代编号列 stacked_iris_dt <- rbindlist(rep(list(iris), 100), idcol = "iteration_id")
注意事项
rep(list(iris), 100)是核心:直接使用rep(iris, 100)会按列重复数据,只有将数据框包裹为列表再重复,才能得到完整的数据集副本列表。- 两种方法生成的结果结构一致,
iteration_id列的值从1到100,对应每行所属的重复批次。
内容的提问来源于stack exchange,提问作者CyG
相关产品推荐
相关产品推荐

