purrr 和 ggplot 函数不显示绘图(NSE 问题)

purrr and ggplot function are not displaying plot (NSE issue)

我怀疑这是处理 NSE 的问题。但为什么这两种方法不起作用,我怎样才能让它们起作用。

temp1 <- function(x){
  iris %>% 
    ggplot(aes(Sepal.Length, Sepal.Width)) +
    geom_point() +
    facet_wrap(as.formula(paste("~", x)))
}
walk('Species', temp1)


temp2 <- function(x){
  x <- as.name(x)
  iris %>% 
    ggplot(aes(Sepal.Length, Sepal.Width)) +
    geom_point() +
    facet_wrap(~ x)
}
walk('Species', temp2)

对我来说,这似乎不是 NSE 问题。如果你阅读 ?walk 它说(强调由我添加):

walk() calls .f for its side-effect and returns the original input

尝试:

t <- walk('Species', temp1)
t
#[1] "Species"

我想如果你给你的 ggplot 添加一个明确的打印,你就能得到你想要的。例如。将 temp1 更改为:

temp1 <- function(x){
  print(iris %>% 
        ggplot(aes(Sepal.Length, Sepal.Width)) +
        geom_point() +
        facet_wrap(as.formula(paste("~", x))))
}