小编Jma*_*mac的帖子

了解何时在函数中使用 ensym、sym 与 enquo

我正在尝试了解不同的 quo/unquo 语法以及何时应该使用它们。

我主要编写传递数据框和列作为参数的函数——使用 ggplot 进行绘图或使用 dplyr 汇总/操作数据(group_by、summary、mutate 等)。然而,有时我还必须使用一个在我的整体函数中不使用 NSE 的函数。

根据我所读到的内容,我的理解是:

1)如果我引用数据框中的列,那么我不需要捕获环境,我可以使用ensymor sym它是否正确?使用 会出现问题enquo,还是没有必要?

2)如果我使用ensym用户可以在技术上在参数中输入字符串或裸列名称。

基于此,我的典型功能设置将如下所示:

library(tidyverse)

dataset <- mtcars

myfun <- function(dat, xvar, yvar, group){

  #either manipulate data
  x <- dat %>% group_by(!!ensym(group)) %>%
    mutate(new = !!ensym(xvar)*5) %>%
    summarize(medianx=median(!!ensym(xvar), na.rm=TRUE), 
              median_new=median(new, na.rm=TRUE))


  #or plot data
  p <- ggplot(dat, aes(x=!!ensym(xvar), y=!!ensym(yvar))) + 
    geom_point()

  #sometime require referencing the column with NSE function..
  median(dat[[xvar]])  #works if require string in argument

  #how would you …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 dplyr nse rlang

9
推荐指数
1
解决办法
2055
查看次数

标签 统计

dplyr ×1

ggplot2 ×1

nse ×1

r ×1

rlang ×1