r - 如何使用 bind_rows() 合并数据集,同时将数据集的名称保留为变量
问题描述
我有一些要与 bind_rows 合并的数据集。我的代码看起来像这样
df1 <- data.frame(v1 = 1:10, v2 = 11:20)
df2 <- data.frame(v1 = 11:20, v2 = 1:10)
list(df1, df2) %>%
bind_rows(.id = "name")
我希望name
专栏阅读"df1"
fordf1
和"df2"
for df2
。我知道我可以用来set_names()
手动执行此操作...
list(df1, df2) %>%
set_names(c("df1", "df2")) %>%
bind_rows(.id = "name")
...但是我想要一种以编程方式执行此操作的方法,无论数据集名称是什么,该方法都有效。我怎样才能做到这一点?
解决方案
我们可以使用dplyr::lst
or which 会自动返回带有参数purrr::lst
的命名list
library(dplyr)
dplyr::lst(df1, df2) %>%
bind_rows(.id = "name")
# name v1 v2
#1 df1 1 11
#2 df1 2 12
#3 df1 3 13
#4 df1 4 14
#5 df1 5 15
#6 df1 6 16
#7 df1 7 17
#8 df1 8 18
#9 df1 9 19
#10 df1 10 20
#11 df2 11 1
#12 df2 12 2
#13 df2 13 3
#14 df2 14 4
#15 df2 15 5
#16 df2 16 6
#17 df2 17 7
#18 df2 18 8
#19 df2 19 9
#20 df2 20 10
推荐阅读
- structlog - 无法弄清楚如何在使用 structlog 写入磁盘时关闭彩色日志记录
- kubernetes - 如何在 Rancher UI 中进行 HELM 测试?
- reactjs - 如何从 React 的下拉列表中显示多个选定的值
- python - 在 Pycharm IDE 中的 h2o.init 上立即初始化和关闭 h2o 会话
- java - 在 Java 中覆盖匿名类的方法
- node.js - MS Teams 机器人的发送消息吞吐量是多少?
- angular - 专注于 ngselect on empty using 指令
- android - Android 登录到服务器
- gradle - gradle 找不到 flatDirs 文件
- flutter - 值更改时如何在 Flutter 上重绘小部件?