使用变量名称定义具有mutate的列内容

时间:2016-10-03 13:12:51

标签: r dplyr

我有一个以这种方式定义的数据框:

dfB  <-  data.frame("_ID0" = c("z1", "z2", "z3"), check.names = FALSE)

我想添加一个列,如下所示:

dfB %>% mutate(fk_table = "dfB")

如何动态计算?

而不是硬编码"dfB"

我在这里找到了一个示例,它使用mutate动态计算列名,但不使用传递的变量的名称。

R: Add new column to dataframe using function

1 个答案:

答案 0 :(得分:4)

我们可以在函数

中使用substitute
f1  <- function(dat) {
          name <- deparse(substitute(dat))
          #or
          #name <- as.character(match.call()[-1])

          dat %>%
               mutate(fk_table = name)
 }

f1(dfB)
#  _ID0 fk_table
#1   z1      dfB
#2   z2      dfB
#3   z3      dfB