我有这样定义的数据框:

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

最佳答案

我们可以在函数内使用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

08-20 01:05