我一直在尝试提取传递给 dplyr::mutate() 中的函数的变量的名称,但没有成功。下面是一个简短的示例,我想创建一个在 mutate 中返回字符串“mpg”的函数:
# mtcars dataset with grouping variable
dataset = mtcars
dataset$group = c(1, 2, 3, 4)
# function to call inside mutate()
f = function(col, data){
str_col = deparse(lazyeval::expr_find(col))
str_col
}
# this does not work: returns the content of mpg
# instead of the variable name as a string
dataset %>%
group_by(group) %>%
mutate(f = f(mpg, dataset)
) %>%
select(group, f)
我使用了lazyeval::expr_find(),因为就我对文档的理解而言,替换只“上升”了一层。当我在函数 wrap() 中调用 f() 时它可以工作,但是当我将它放在 group_by()%>%mutate() 中时它返回 mpg 的内容,而不是名称“mpg”
我发现了一些相关的问题,但没有一个能解决我的问题。
非常感谢任何帮助:)