"значение отсутствует" с функцией метки фасета

Я хотел бы пометить, используя функцию, но я получаю ошибку. Большое спасибо заранее за ваш вклад!

1_Load пакеты

library(ggplot2)

2_Dataframe

drink <- c(replicate(18, "Water"), 
           replicate(22, "Beer"),
           replicate(20, "Coke"))
person <- c(replicate(6, c(replicate(5, 1), replicate(5, 2))))
dd <- data.frame(person, drink)
rm(drink, person)

Функция 3_Labeller

mf_labeller <- function(var, value){
  value <- as.character(value)
  if(var == "person"){
    value[value == "1"] <- "Women"
    value[value == "2"] <- "Men"
  }
  return(value)
}

4_Labelled plot (здесь появляется ошибка!)

p <- ggplot(dd,
            aes(drink)) +
  geom_bar(stat = "count") +
  facet_grid(person ~ .,
             labeller = mf_labeller)
p

1 ответ

Решение

Возможно, есть более простой способ сделать это, чем использовать функцию:

person_values <- c("1" = "Women",
                   "2" = "Men")

ggplot(dd, aes(drink)) +
    geom_bar(stat = "count") +
    facet_grid(person ~ ., labeller = as_labeller(person_values))

Эквивалентно, из labeller документация:

ggplot(dd, aes(drink)) +
    geom_bar(stat = "count") +
    facet_grid(person ~ ., labeller = labeller(person = person_values))

Обратите внимание, что это решение исходит из ранее заданного вопроса.

Другие вопросы по тегам