美文网首页R_东海RR语言
dplyr::bind_rows整合多个数据框

dplyr::bind_rows整合多个数据框

作者: 医科研 | 来源:发表于2019-07-08 09:17 被阅读0次

    高效的整合多个数据框

    在base包中可以通过cbind, rbind按行或列连接数据框,这个我们不多解释了 dplyr中有更高级的函数bind_rows, bind_cols,能用于高效的连接多个数据框 其实这套高级函数是** do.call(cbind,dfs),do.call(rbind,dfs)**模式的植入,

    • 用于多个数据框的整合 list(数据框1,数据框2) .
    • id参数可以生成一个关联起原来数据框的id,标记数据来源

    举例说明其应用

    数据框输入作为参数 重要的特点是能够接受list作为输入参数 另一个特点是可以同时连接起多个数据框,不仅限于两个

    library(dplyr)
    ## 
    ## Attaching package: 'dplyr'
    ## The following objects are masked from 'package:stats':
    ## 
    ##     filter, lag
    ## The following objects are masked from 'package:base':
    ## 
    ##     intersect, setdiff, setequal, union
    one <- mtcars[1:4, ]
    two <- mtcars[11:14, ]
    head(one)
    ##                 mpg cyl disp  hp drat    wt  qsec vs am gear carb
    ## Mazda RX4      21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
    ## Mazda RX4 Wag  21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
    ## Datsun 710     22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
    ## Hornet 4 Drive 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
    head(two)
    ##              mpg cyl  disp  hp drat   wt qsec vs am gear carb
    ## Merc 280C   17.8   6 167.6 123 3.92 3.44 18.9  1  0    4    4
    ## Merc 450SE  16.4   8 275.8 180 3.07 4.07 17.4  0  0    3    3
    ## Merc 450SL  17.3   8 275.8 180 3.07 3.73 17.6  0  0    3    3
    ## Merc 450SLC 15.2   8 275.8 180 3.07 3.78 18.0  0  0    3    3
    

    按行连接,但rowname丢失了

    (bind_rows(one,two))
    ##    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    ## 1 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
    ## 2 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
    ## 3 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
    ## 4 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
    ## 5 17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
    ## 6 16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
    ## 7 17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
    ## 8 15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
    

    以list形式,自动拼接

    bind_rows(list(one, two))
    ##    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    ## 1 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
    ## 2 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
    ## 3 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
    ## 4 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
    ## 5 17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
    ## 6 16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
    ## 7 17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
    ## 8 15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
    

    按cyl裂解数据框,刚好获得了list形式,能够很好的与bind_rows衔接起来
    且bind_rows不仅仅连接的是两个,还是多个

    class(mtcars)
    ## [1] "data.frame"
    split(mtcars, mtcars$cyl)
    ## $`4`
    ##                 mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    ## Datsun 710     22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
    ## Merc 240D      24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
    ## Merc 230       22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
    ## Fiat 128       32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
    ## Honda Civic    30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
    ## Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
    ## Toyota Corona  21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
    ## Fiat X1-9      27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
    ## Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
    ## Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
    ## Volvo 142E     21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
    ## 
    ## $`6`
    ##                 mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    ## Mazda RX4      21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
    ## Mazda RX4 Wag  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
    ## Hornet 4 Drive 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
    ## Valiant        18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
    ## Merc 280       19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
    ## Merc 280C      17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
    ## Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
    ## 
    ## $`8`
    ##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    ## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
    ## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
    ## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
    ## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
    ## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
    ## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
    ## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
    ## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
    ## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
    ## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
    ## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
    ## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
    ## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
    ## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
    bind_rows(split(mtcars, mtcars$cyl))
    ##     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    ## 1  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
    ## 2  24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
    ## 3  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
    ## 4  32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
    ## 5  30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
    ## 6  33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
    ## 7  21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
    ## 8  27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
    ## 9  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
    ## 10 30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
    ## 11 21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
    ## 12 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
    ## 13 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
    ## 14 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
    ## 15 18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
    ## 16 19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
    ## 17 17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
    ## 18 19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
    ## 19 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
    ## 20 14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
    ## 21 16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
    ## 22 17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
    ## 23 15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
    ## 24 10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
    ## 25 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
    ## 26 14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
    ## 27 15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
    ## 28 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
    ## 29 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
    ## 30 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
    ## 31 15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
    ## 32 15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
    

    可以连接多个list

    bind_rows(list(one, two), list(two, one))
    ##     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    ## 1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
    ## 2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
    ## 3  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
    ## 4  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
    ## 5  17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
    ## 6  16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
    ## 7  17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
    ## 8  15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
    ## 9  17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
    ## 10 16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
    ## 11 17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
    ## 12 15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
    ## 13 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
    ## 14 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
    ## 15 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
    ## 16 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
    

    还可以连接向量,同时可以混合数据框

    bind_rows(
      c(a = 1, b = 2),
      c(a = 3, b = 4)
    )
    ## # A tibble: 2 x 2
    ##       a     b
    ##   <dbl> <dbl>
    ## 1     1     2
    ## 2     3     4
    

    可以创建一个关联连接两个数据框的id,用于标记数据框的来源

    bind_rows(list(one, two), .id = "id")
    ##   id  mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    ## 1  1 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
    ## 2  1 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
    ## 3  1 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
    ## 4  1 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
    ## 5  2 17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
    ## 6  2 16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
    ## 7  2 17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
    ## 8  2 15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
    bind_rows(list(a = one, b = two), .id = "id")
    ##   id  mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    ## 1  a 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
    ## 2  a 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
    ## 3  a 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
    ## 4  a 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
    ## 5  b 17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
    ## 6  b 16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
    ## 7  b 17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
    ## 8  b 15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
    bind_rows("group 1" = one, "group 2" = two, .id = "groups")
    ##    groups  mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    ## 1 group 1 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
    ## 2 group 1 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
    ## 3 group 1 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
    ## 4 group 1 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
    ## 5 group 2 17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
    ## 6 group 2 16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
    ## 7 group 2 17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
    ## 8 group 2 15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
    

    按行结合时不需要列名相同

    bind_rows(data.frame(x = 1:3), data.frame(y = 1:4))
    ##    x  y
    ## 1  1 NA
    ## 2  2 NA
    ## 3  3 NA
    ## 4 NA  1
    ## 5 NA  2
    ## 6 NA  3
    ## 7 NA  4
    

    但按列结合时需要行名相同

    # bind_cols(data.frame(x = 1), data.frame(y = 1:2)) 报错结果
    bind_cols(one, two)
    ##    mpg cyl disp  hp drat    wt  qsec vs am gear carb mpg1 cyl1 disp1 hp1
    ## 1 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4 17.8    6 167.6 123
    ## 2 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4 16.4    8 275.8 180
    ## 3 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1 17.3    8 275.8 180
    ## 4 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1 15.2    8 275.8 180
    ##   drat1  wt1 qsec1 vs1 am1 gear1 carb1
    ## 1  3.92 3.44  18.9   1   0     4     4
    ## 2  3.07 4.07  17.4   0   0     3     3
    ## 3  3.07 3.73  17.6   0   0     3     3
    ## 4  3.07 3.78  18.0   0   0     3     3
    bind_cols(list(one, two))
    ##    mpg cyl disp  hp drat    wt  qsec vs am gear carb mpg1 cyl1 disp1 hp1
    ## 1 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4 17.8    6 167.6 123
    ## 2 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4 16.4    8 275.8 180
    ## 3 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1 17.3    8 275.8 180
    ## 4 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1 15.2    8 275.8 180
    ##   drat1  wt1 qsec1 vs1 am1 gear1 carb1
    ## 1  3.92 3.44  18.9   1   0     4     4
    ## 2  3.07 4.07  17.4   0   0     3     3
    ## 3  3.07 3.73  17.6   0   0     3     3
    ## 4  3.07 3.78  18.0   0   0     3     3
    

    bind_cols用法与bind_rows相同,这里不去赘述了

    插一个split函数的应用讲解

    split函数用于裂解数据框,可以根据因子来裂解,裂解后得到的是一个list list就非常适合与lapply,sapply,tapply等结合起来使用了

    举个例子说明一下

    head(mtcars)
    ##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
    ## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
    ## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
    ## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
    ## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
    ## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
    ## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
    df<-as.data.frame(mtcars)
    

    按cyl分组裂解数据框

    with(df,split(mpg,cyl))
    ## $`4`
    ##  [1] 22.8 24.4 22.8 32.4 30.4 33.9 21.5 27.3 26.0 30.4 21.4
    ## 
    ## $`6`
    ## [1] 21.0 21.0 21.4 18.1 19.2 17.8 19.7
    ## 
    ## $`8`
    ##  [1] 18.7 14.3 16.4 17.3 15.2 10.4 10.4 14.7 15.5 15.2 13.3 19.2 15.8 15.0
    

    裂解整个数据框

    split(mtcars,mtcars$cyl)
    ## $`4`
    ##                 mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    ## Datsun 710     22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
    ## Merc 240D      24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
    ## Merc 230       22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
    ## Fiat 128       32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
    ## Honda Civic    30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
    ## Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
    ## Toyota Corona  21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
    ## Fiat X1-9      27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
    ## Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
    ## Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
    ## Volvo 142E     21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
    ## 
    ## $`6`
    ##                 mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    ## Mazda RX4      21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
    ## Mazda RX4 Wag  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
    ## Hornet 4 Drive 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
    ## Valiant        18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
    ## Merc 280       19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
    ## Merc 280C      17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
    ## Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
    ## 
    ## $`8`
    ##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    ## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
    ## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
    ## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
    ## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
    ## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
    ## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
    ## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
    ## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
    ## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
    ## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
    ## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
    ## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
    ## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
    ## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
    

    按多个变量构成的分组裂解

    with(df,split(mpg,list(cyl,am)))
    ## $`4.0`
    ## [1] 24.4 22.8 21.5
    ## 
    ## $`6.0`
    ## [1] 21.4 18.1 19.2 17.8
    ## 
    ## $`8.0`
    ##  [1] 18.7 14.3 16.4 17.3 15.2 10.4 10.4 14.7 15.5 15.2 13.3 19.2
    ## 
    ## $`4.1`
    ## [1] 22.8 32.4 30.4 33.9 27.3 26.0 30.4 21.4
    ## 
    ## $`6.1`
    ## [1] 21.0 21.0 19.7
    ## 
    ## $`8.1`
    ## [1] 15.8 15.0
    

    按列裂解矩阵

    ma <- cbind(x = 1:10, y = (-4:5)^2)
    head(ma)
    ##      x  y
    ## [1,] 1 16
    ## [2,] 2  9
    ## [3,] 3  4
    ## [4,] 4  1
    ## [5,] 5  0
    ## [6,] 6  1
    split(ma, col(ma))
    ## $`1`
    ##  [1]  1  2  3  4  5  6  7  8  9 10
    ## 
    ## $`2`
    ##  [1] 16  9  4  1  0  1  4  9 16 25
    split(1:10, 1:2)
    ## $`1`
    ## [1] 1 3 5 7 9
    ## 
    ## $`2`
    ## [1]  2  4  6  8 10
    

    do.call函数

    执行函数及传递给函数的参数 举例说明比较清楚

    在给定的参数下执行paste函数

    tmp <- expand.grid(letters[1:2], 1:3, c("+", "-"))
    tmp
    ##    Var1 Var2 Var3
    ## 1     a    1    +
    ## 2     b    1    +
    ## 3     a    2    +
    ## 4     b    2    +
    ## 5     a    3    +
    ## 6     b    3    +
    ## 7     a    1    -
    ## 8     b    1    -
    ## 9     a    2    -
    ## 10    b    2    -
    ## 11    a    3    -
    ## 12    b    3    -
    do.call("paste", c(tmp, sep = ""))
    ##  [1] "a1+" "b1+" "a2+" "b2+" "a3+" "b3+" "a1-" "b1-" "a2-" "b2-" "a3-"
    ## [12] "b3-"
    

    quote参数决定是否quote起来

    list(as.name("A"))
    ## [[1]]
    ## A
    do.call(paste, list(as.name("A"), as.name("B")), quote = TRUE)
    ## [1] "A B"
    

    相关阅读:

    dplyr::bind_rows整合多个数据框(本文)
    tidyr总结篇
    dplyr总结篇
    R语言中的连接dplyr中的join系列与merge函数
    R语言中创建函数参数的问题
    R语言with/within函数添加数据框到环境变量
    R语言简单for循环(二)
    R语言for循环01-批量完成相关系数计算
    R语言-相关系数计算(一)
    认真聊一聊R语言中的paste/paste0函数
    R语言aggregate函数

    今天的内容就到这里,我是白介素2,下期再见。

    转载请注明出处。

    相关文章

      网友评论

        本文标题:dplyr::bind_rows整合多个数据框

        本文链接:https://www.haomeiwen.com/subject/wthwhctx.html