我可以使用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)

r - 在scale_y_continuous中使用匿名函数-LMLPHP

08-25 08:27