R `scale :: comma` работает, а` scale :: comma () `- почему? - PullRequest
0 голосов
/ 14 апреля 2019

Когда я использую функцию в пакете, я часто могу написать ее в виде function() или просто function без скобок. Это не похоже на случай с scales::comma. Почему строка 7 работает ниже, а строка 8 - нет.

library(tidyverse)
mtcars %>% 
  count(cyl) %>% 
  ungroup() %>% 
  mutate(n = n * 1000) %>% 
  ggplot(aes(cyl, n)) + 
  scale_y_continuous(labels = scales::comma) +  # line 7
  # scale_y_continuous(labels = scales::comma()) +  # line 8
  geom_line()

Ошибка LINE 8

Error in number(x = x, accuracy = accuracy, scale = scale, prefix = prefix,  : 
  argument "x" is missing, with no default

1 Ответ

4 голосов
/ 14 апреля 2019

это взято со страницы справки scale_y_continouos относительно входного параметра labels:

метки Один из:

  • NULL для noметки
  • waiver () для меток по умолчанию, вычисленных объектом преобразования
  • Вектор символов, дающий метки (должен иметь такую ​​же длину, что и разрывы)
  • A function , который принимает разрывы в качестве входных данных и возвращает метки в качестве выходных данных

Последний в данном случае является наиболее важным.Ярлыки ожидают функцию, которая является scales::comma.scales::comma() с другой стороны, это то, что возвращает эта функция, но больше не является функцией.

...