Я пишу функцию для воспроизведения нескольких диаграмм, которые будут иметь одинаковое форматирование (и другие вещи) с использованием highcharter. Я хочу иметь возможность выбирать разные столбцы набора данных, если имена меняются или если я хочу сделать что-то другое, и я принимаю эти аргументы с помощью {{ }}
. Но затем я получаю эту странную ошибку:
Error: Problem with `mutate()` input `x`.
x Input `x` must be a vector, not a `formula` object.
i Input `x` is `~Year`.
Вот мой (минимально воспроизводимый) код:
library(dplyr)
library(highcharter)
plot_high_chart <- function(.data,
chart_type = "column",
x_value = Year,
y_value = total,
group_value = service) {
.data %>%
hchart(chart_type, hcaes(x = {{x_value}}, y = {{y_value}}, group = {{group_value}}))
}
data %>% plot_high_chart()
и вот результат dput
для данных:
structure(list(Year = c(2016, 2017, 2017, 2018, 2018, 2018),
service = structure(c(10L, 3L, 9L, 5L, 7L, 9L), .Label = c("Defense Logistics Agency",
"Chemical and Biological Defense Program", "Defense Information Systems Agency",
"United States Special Operations Command", "Office of the Secretary Of Defense",
"Missile Defense Agency", "Defense Advanced Research Projects Agency",
"Navy", "Army", "Air Force"), class = "factor"), total = c(9.435,
0, 10.442, 9.969, 73.759, 8.855)), row.names = c(NA, -6L), groups = structure(list(
Year = c(2016, 2017, 2018), .rows = structure(list(1L, 2:3,
4:6), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = c(NA, 3L), class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))