我正在使用tidyeval
编写一个函数,在尝试检查NA
时遇到了问题。
我正在编写一个函数,使用ggplot2
绘制图,如下所示:
my_func <- function(data, x = NA, y = NA) {
if(is.na(x) & is.na(y)) {
stop("`x` and `y` cannot both be NA.")
}
if(is.na(y)) {
data %>%
ggplot2::ggplot(ggplot2::aes(x = {{ x }})) +
ggplot2::geom_bar()
} else {
data %>%
ggplot2::ggplot(ggplot2::aes(y = {{ y }})) +
ggplot2::geom_bar()
}
}
错误为:
data("iris")
my_func(data = iris, x = Species)
#> Error in my_func(data = iris, x = Species) :
#> object 'Species' not found
我从Advanced R开始学习NSE和元编程,但对这个主题还是比较陌生的。
我已经使用NA
s和is.na
和NULL
s和is.null
尝试了这个通用函数。我知道我错过了一些关于NSE的东西。
1条答案
按热度按时间1qczuiv01#
我们可以用
missing
来创造条件