【问题标题】:Add column with column name as input string添加具有列名的列作为输入字符串
【发布时间】:2020-04-17 09:56:06
【问题描述】:

快速 dplyr 问题在这里。我正在尝试创建一个接受任何列名并将列添加到数据框中的函数。例如:

Name               Age 
Misty              4    
Crookshanks        12
Simba              18

现在我想通过底部的函数添加“类型”列:

addColumn(myDF, 'Type', 'Cat')

Name               Age       Type
Misty              4         Cat
Crookshanks        12        Cat
Simba              18        Cat

如何使用该函数来接受列字符串输入?现在它只是将列写为“列”而不是“类型”

addColumn <- function(df, column, value) {

  df <- df %>%
    mutate( column  = value )

  View(df)
}

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    你必须使用一些非标准的评估。

    library(dplyr)
    library(rlang)
    
    addColumn <- function(df, column, value) {
       df %>% mutate(!!column := value )
    }
    
    addColumn(myDF, 'Type', 'Cat')
    
    #        Name  Age Type
    #1       Misty   4  Cat
    #2 Crookshanks  12  Cat
    #3       Simba  18  Cat
    

    【讨论】:

      【解决方案2】:

      只是为了提供替代方案,您可以使用良好的旧基础 R 重写您的函数:

      addColumn <- function(df, column, value) {
        df[column]<-value
        return(df)
      }
      

      这会给你同样的结果:

      > print(addColumn(myDF,"Type", "Cat"))
               Name Age Type
      1       Misty   4  Cat
      2 Crookshanks  12  Cat
      3       Simba  18  Cat
      

      无需调用其他库(甚至dplyr

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-15
        • 1970-01-01
        • 2018-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多