首页 > 解决方案 > R quosure 问题中的用户函数

问题描述

我正在使用库(summarytools)中的频率来创建一些频率。

例子:

mtcars %>%
  freq(mpg,
       cumul = FALSE,
       totals = TRUE)

我正在尝试创建一个用户函数,以便可以循环选择变量来生成这些表:

create_freq <- function(v1) {
  v1 <- enquo(v1)
  out <- mtcars %>%
  freq(!!v1, 
       cumul = FALSE,
       totals = TRUE)
  return(out)
}


create_freq(mpg)

但是我得到了这个我无法弄清楚的错误,我认为关闭不正确,但我不知道如何调试......请帮忙?

Error in freq(., !!v1, cumul = FALSE, totals = TRUE) : 
  NULL is either NULL or does not exist
Called from: freq(., !!v1, cumul = FALSE, totals = TRUE)

标签: r

解决方案


mtcars %>%freq(mpg,cumul = FALSE,totals = TRUE)给出与 相同的输出freq(mtcars$mpg, cumul = FALSE, totals = TRUE。因此,在不使用 NSE 使事情变得复杂的情况下,您可以尝试一下。

library(summarytools)

create_freq <- function(v1) {
  freq(v1,cumul = FALSE, totals = TRUE)
}

对于一个变量 -

create_freq(mtcars$mpg)

对于多个变量 -

lapply(mtcars[1:2], create_freq)

推荐阅读