【问题标题】:Assigning function argument to column name将函数参数分配给列名
【发布时间】:2021-02-15 04:50:16
【问题描述】:

我希望将函数的输入添加到函数中创建的列名中。

new_col = function(dat_, period_) {
dat_ %>% mutate(paste0('mpg',period_) = mpg + period_
}

mtcars %>% newcol(20)

在这个函数中,应该创建 mpg20 的值等于 mpg + 20。

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    你可以使用:

    library(dplyr)
    
    new_col = function(dat_, period_) {
      dat_ %>% mutate(!!paste0('mpg',period_) := mpg + period_)
    }
    
    mtcars %>% new_col(20)
    
    #                     mpg cyl  disp  hp drat    wt  qsec vs am gear carb mpg20
    #Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4  41.0
    #Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4  41.0
    #Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1  42.8
    #Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1  41.4
    #Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2  38.7
    #Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1  38.1
    #...
    #...
    

    !! 和 := 组合用于 LHS 有字符变量时。

    【讨论】:

    • 请您在代码中解释一下!! 和:=。谢谢。
    • @TarJae 我添加了一些解释。
    猜你喜欢
    • 2021-11-15
    • 1970-01-01
    • 2019-01-10
    • 2016-06-13
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多