r - 使用数据帧列为r中的bind_rows指定数据帧

标签 r tidyverse

我有一个数据框(此处为 dfToc),其中包含数据框名称列表。我想用它来指定其他数据帧通过 tidyverse 命令 bind_rows 连接。如果我在 bind_rows 命令中显式命名其他数据帧,则串联有效,但如果我使用 dfToc 指定其他数据帧,则串联无效。这看起来很简单,但我很困惑。下面是一个简化的示例。

library(tidyverse)

df1 <- data.frame(Name = c("Jon", "Bill", "Maria", "Ben", "Tina"),
                  Score = c(23, 41, 32, 58, 26))

df2 <- data.frame(Name = c("Jon", "Bill", "Maria", "Ben", "Tina"),
                  Score = c(32, 14, 23, 85, 62))

dfToc <- data.frame(fn = c('df1' , 'df2'))
dfToc$fn
#> [1] "df1" "df2"

# explicitly naming the dataframes works
bind_rows(list(df1 , df2))
#>     Name Score
#> 1    Jon    23
#> 2   Bill    41
#> 3  Maria    32
#> 4    Ben    58
#> 5   Tina    26
#> 6    Jon    32
#> 7   Bill    14
#> 8  Maria    23
#> 9    Ben    85
#> 10  Tina    62

# using dfToc to specify the dataframes results in an error
bind_rows(list(dfToc$fn))
#> Error in `bind_rows()`:
#> ! Argument 1 must be a data frame or a named atomic vector.
#> Backtrace:
#>     ▆
#>  1. └─dplyr::bind_rows(list(dfToc$fn))
#>  2.   └─rlang::abort(glue("Argument {i} must be a data frame or a named atomic vector."))

感谢您的帮助!

最佳答案

dfToc$fn 是表示数据帧名称的字符向量。它不是数据框列表,而这正是bind_rows所需要的。要使用这些对象的名称将工作区中的多个对象放入列表中,我们可以使用 mget:

bind_rows(mget(dfToc$fn))
#>     Name Score
#> 1    Jon    23
#> 2   Bill    41
#> 3  Maria    32
#> 4    Ben    58
#> 5   Tina    26
#> 6    Jon    32
#> 7   Bill    14
#> 8  Maria    23
#> 9    Ben    85
#> 10  Tina    62

关于r - 使用数据帧列为r中的bind_rows指定数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76696003/

相关文章:

r - ggplot 中的配对段

r - 改变 tibbles 列表中的所有列

r - 如何报告 R 中的错​​误索引?

r - 创建连续整数,然后使用 dplyr 创建存储在 sqlserver 中的表的索引

html - 如何更改 R Markdown HTML 文档中目录的颜色和属性?

r - R中的Apriori算法,不是否定规则

r - 使用 map (purrr) 将参数传递给 R 自定义函数

r - 使用 purrr 从以公共(public)字母开头的多个列表中提取元素

python - 是否有提供有关数据框的实用信息的功能?

r - Shiny 的应用程序中选项卡名称之间没有空格