如何让dplyr::bind_rows()的.id列显示data.frame变量名而非数字?
实现bind_rows合并时显示数据框变量名作为来源标识
要让bind_rows()的.id列显示数据框的变量名,只需要把要合并的数据框放在命名列表中传递给函数即可,bind_rows会自动将列表的名称作为source列的值。
方法1:手动构建命名列表
直接用list()创建命名列表,键名设置为数据框的变量名:
library(dplyr) df1 <- data.frame(x = c(1,2,3), y = c(4,5,6)) df2 <- data.frame(x = c(7,8,9), y = c(10,11,12)) bind_rows(list(df1 = df1, df2 = df2), .id = 'source')
运行结果:
#> source x y #> 1 df1 1 4 #> 2 df1 2 5 #> 3 df1 3 6 #> 4 df2 7 10 #> 5 df2 8 11 #> 6 df2 9 12
方法2:用dplyr::lst()简化代码
dplyr的lst()函数会自动将变量名作为列表的键名,写法更简洁,无需手动重复输入变量名:
bind_rows(lst(df1, df2), .id = 'source')
该写法和方法1的效果完全一致,尤其适合合并多个数据框的场景。
内容的提问来源于stack exchange,提问作者joshbrows
相关产品推荐
相关产品推荐

