R: метка geom_text не распознает числовой символ

Я создал график с помощью ggplot2, и у меня есть этот код, который работает достаточно хорошо.

ggp <- ggplot(data.frame(diam.split.data$"(0,10]"),aes(x=intcat))
ggp + geom_bar() + 
  geom_text(stat='count', aes(label=paste(round(..count../151*100),"%")), vjust=-1)

введите здесь описание изображения

Однако мне нужно вручную изменять 151 (общее количество наблюдений для этого набора данных) каждый раз, когда я создаю другой график. Поэтому я придумал эту строку, которая дает мне 151 (и которая также работает с каждым другим набором данных):

f1 <- (as.numeric(substr(((unname((summary(diam.split.data$"(0,10]"))))[1,1]), 
  start=9, stop=20)))

Здесь нет проблем. f1 дает 151 так же, как f1 ‹- 151.

НО, когда я пытаюсь заменить 151 в коде ggplot2, это не удается:

Ошибка при вставке (формула = округление (количество/f1 * 100), «%»): объект «f1» не найден

Как указать R использовать f1 в качестве стандартного числового значения (то же самое, что и с 151)?


person Sergio Cortez Ghio    schedule 15.03.2017    source источник
comment
Может быть, вы просто хотели ..ncount.. вместо этого...?   -  person joran    schedule 15.03.2017
comment
Пожалуйста. обеспечить воспроизводимый ввод данных в ggplot2. Мне не ясно, что вам нужно вычислять f1 таким образом, когда вы можете сделать (..count..)/sum(..count..)   -  person Djork    schedule 15.03.2017
comment
Ах, ..ncount.. недоступен с этой статистикой.   -  person joran    schedule 15.03.2017
comment
Вам нужно делать математику в ggplot? возможно, более чисто сначала выполнить все вычисления, а затем передать результат в ggplot.   -  person Dan Slone    schedule 15.03.2017
comment
Я согласен с Р.С., а также хотел бы отметить, что, если я не ошибаюсь, ваш расчет f1 является очень странным способом получить nrow(diam.split.data)...?   -  person joran    schedule 15.03.2017
comment
Пожалуйста, предоставьте минимально воспроизводимый пример. Спасибо.   -  person Uwe    schedule 16.03.2017
comment
Всем спасибо за быстрые ответы! Джоран, да зря мой расчет f1 был таким сложным, спасибо! Дэн Слоун, да, я искал способ сделать это быстро, без необходимости сначала делать математику, но это действительно менее чисто. Р.С. (..count..)/sum(..count..)*100 сделал именно то, что я искал! Большое спасибо, и, пожалуйста, извините за плохое качество этого поста, так как я пишу здесь впервые. В следующий раз я буду более точным и предоставлю данные!   -  person Sergio Cortez Ghio    schedule 16.03.2017
comment
@SergioCortez, не могли бы вы опубликовать ответ ниже, резюмируя сказанное в комментариях? Спасибо, если найдете время.   -  person halfer    schedule 17.03.2017


Ответы (1)


Решением моей проблемы была простая замена (..count../151*100) на ((..count..)/sum(..count..)*100) как @R.S. предложенный. Спасибо всем.

person Sergio Cortez Ghio    schedule 19.03.2017