我一直试图提取传递给dplyr :: 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(),因为只替换了#34;上升了#34;据我所知,文档是一层。当我在函数wrap()中调用f()时,它会起作用,但它会返回mpg的内容,而不是名称" mpg"当我把它放在group_by()%>%mutate()
中我发现了一些相关的问题,但没有一个问题能解决我的问题。
任何帮助非常感谢:)
答案 0 :(得分:1)
我还不完全清楚你要做什么,但也许这会有所帮助:
f = function(col, data){
str_col = deparse(substitute(col))
data.frame(str_col)
}
dataset %>%
group_by(group) %>%
do(f(mpg, .))