R dplyr - 在mutate / summarize中将变量名称作为字符串

时间:2017-03-08 18:47:35

标签: r dplyr non-standard-evaluation

我一直试图提取传递给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()

我发现了一些相关的问题,但没有一个问题能解决我的问题。

任何帮助非常感谢:)

1 个答案:

答案 0 :(得分:1)

我还不完全清楚你要做什么,但也许这会有所帮助:

f = function(col, data){
  str_col = deparse(substitute(col))
  data.frame(str_col)
}

dataset %>% 
   group_by(group) %>% 
   do(f(mpg, .))