在 scale_y_continuous 中使用匿名函数

using anonymous function within scale_y_continuous

我可以使用 function(y) comma(y) 在 scale_y_continuous() 中调用匿名函数,但我不能使用 ~ 约定调用匿名函数。在这种情况下可以使用 ~ 吗?

library(scales)
library(ggplot2)

mtcars$model <- rownames(mtcars)

# Success
ggplot(mtcars[1:3,], aes(x = model, y = wt*2000)) + 
  geom_col() + 
  scale_y_continuous(labels = function(y) comma(y))

# Fail
ggplot(mtcars[1:3,], aes(x = model, y = wt*2000)) + 
  geom_col() + 
  scale_y_continuous(labels = ~comma(y))

一个选项是在 purrr::as_mapper

内换行
library(scales)
library(ggplot2)
library(purrr)
ggplot(mtcars[1:3,], aes(x = model, y = wt*2000)) + 
  geom_col() + 
  scale_y_continuous(labels = as_mapper(~ comma(.)))

或使用rlang::as_function(~ comma(.))


或者直接使用comma而不调用任何匿名函数

ggplot(mtcars[1:3,], aes(x = model, y = wt*2000)) + 
  geom_col() + 
  scale_y_continuous(labels = comma)