我们可以传递一个vector
字符串,然后使用它mget
来获取值
get_bind_dfs <- function(str1 ){
dplyr::bind_rows(mget(str1, envir = .GlobalEnv))
}
get_bind_dfs(paste0("df_", 1:3))
# A tibble: 8 x 11
# mpg cyl disp hp drat wt qsec vs am gear carb
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 21.0 6.00 160 110 3.90 2.62 16.5 0 1.00 4.00 4.00
#2 21.0 6.00 160 110 3.90 2.88 17.0 0 1.00 4.00 4.00
#3 18.1 6.00 225 105 2.76 3.46 20.2 1.00 0 3.00 1.00
#4 14.3 8.00 360 245 3.21 3.57 15.8 0 0 3.00 4.00
#5 24.4 4.00 147 62.0 3.69 3.19 20.0 1.00 0 4.00 2.00
#6 19.7 6.00 145 175 3.62 2.77 15.5 0 1.00 5.00 6.00
#7 15.0 8.00 301 335 3.54 3.57 14.6 0 1.00 5.00 8.00
#8 21.4 4.00 121 109 4.11 2.78 18.6 1.00 1.00 4.00 2.00
或将 data.frames 作为list
可以bind_rows
接受的传递
get_bind_dfs <- function(one_or_more_dfs){
dplyr::bind_rows(one_or_more_dfs)
}
get_bind_dfs(list(df_1, df_2, df_3))
# A tibble: 8 x 11
# mpg cyl disp hp drat wt qsec vs am gear carb
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 21.0 6.00 160 110 3.90 2.62 16.5 0 1.00 4.00 4.00
#2 21.0 6.00 160 110 3.90 2.88 17.0 0 1.00 4.00 4.00
#3 18.1 6.00 225 105 2.76 3.46 20.2 1.00 0 3.00 1.00
#4 14.3 8.00 360 245 3.21 3.57 15.8 0 0 3.00 4.00
#5 24.4 4.00 147 62.0 3.69 3.19 20.0 1.00 0 4.00 2.00
#6 19.7 6.00 145 175 3.62 2.77 15.5 0 1.00 5.00 6.00
#7 15.0 8.00 301 335 3.54 3.57 14.6 0 1.00 5.00 8.00
#8 21.4 4.00 121 109 4.11 2.78 18.6 1.00 1.00 4.00 2.00
或者另一种选择是使用三个点作为参数,然后通过转换为quosures
library(purrr)
get_bind_dfs <- function(...) {
exprs <- rlang::enquos(...)
map(exprs, rlang::eval_tidy) %>%
bind_rows
}
get_bind_dfs(df_1, df_2, df_3)
# A tibble: 8 x 11
# mpg cyl disp hp drat wt qsec vs am gear carb
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 21.0 6.00 160 110 3.90 2.62 16.5 0 1.00 4.00 4.00
#2 21.0 6.00 160 110 3.90 2.88 17.0 0 1.00 4.00 4.00
#3 18.1 6.00 225 105 2.76 3.46 20.2 1.00 0 3.00 1.00
#4 14.3 8.00 360 245 3.21 3.57 15.8 0 0 3.00 4.00
#5 24.4 4.00 147 62.0 3.69 3.19 20.0 1.00 0 4.00 2.00
#6 19.7 6.00 145 175 3.62 2.77 15.5 0 1.00 5.00 6.00
#7 15.0 8.00 301 335 3.54 3.57 14.6 0 1.00 5.00 8.00
#8 21.4 4.00 121 109 4.11 2.78 18.6 1.00 1.00 4.00 2.00
当我们c
对多个data.frame
(list
列的 a )进行连接 ( ) 时,它会丢失data.frame
属性并将列附加到 alist
c(df_1, df_2)