【发布时间】:2016-10-04 03:55:13
【问题描述】:
我有一个这样定义的数据框:
dfB <- data.frame("_ID0" = c("z1", "z2", "z3"), check.names = FALSE)
我想添加一列,如下所示:
dfB %>% mutate(fk_table = "dfB")
不用硬编码"dfB",如何动态计算?
我在这里找到了一个示例,它使用 mutate 动态计算列名,但不使用传递的变量的名称。
【问题讨论】:
我有一个这样定义的数据框:
dfB <- data.frame("_ID0" = c("z1", "z2", "z3"), check.names = FALSE)
我想添加一列,如下所示:
dfB %>% mutate(fk_table = "dfB")
不用硬编码"dfB",如何动态计算?
我在这里找到了一个示例,它使用 mutate 动态计算列名,但不使用传递的变量的名称。
【问题讨论】:
我们可以在函数中使用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
【讨论】:
dplyr 命令链中使用它。有没有办法使这项工作? dfB %>% f1()
f1 中,并且在这种情况下,每当我想进行更改时总是创建一个新的临时函数?还是有另一种可能?也许我应该先在基础R 中添加必要的列,然后再开始使用dplyr 命令?
%>% 进行任何其他计算。我不确定如何使用dfB %>% f1