我有这样定义的数据框:
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