使用输入字符串作为列名添加列

3

这里有一个快速的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

我如何使用该函数来接受列字符串输入?现在它只是将列写为'column',而不是'Type'。
addColumn <- function(df, column, value) {

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

  View(df)
}
2个回答

2
你需要使用一些非标准的评估方法。
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

1

为了提供一个替代方案,您可以使用传统的基础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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接