Итак, я был на Google в течение нескольких часов без ответа.
Я хочу создать пользовательскую функцию на стороне сервера, которая принимает входные данные, которые, как я уже знаю, для оборачивания реактивных ({input $ feature)}, но проблема заключается в том, как включить реактивные значения в качестве входных данных.
Причина, по которой я хочу это сделать, заключается в том, что у меня есть страница navbarPage с несколькими вкладками, которые совместно используют такие элементы, как одни и те же графики. Поэтому я хочу пользовательскую функцию, которая создает все похожие фильтры и не должна создавать несколько одинаковых реактивных выражений с разными именами входных и реактивных переменных, которые занимают более 2000 строк кода.
server <- function(input, output) {
filtered_JointKSA <- reactiveVal(0)
create_filtered_data <- function(df, input_specialtya, filtered_JointKSA) {
if (input_specialtya == 'manual') {
data <- filter(data, SPECIALTY %in% input_specialtyb)
}
if (filtered_JointKSA != 0) {
data <- filter(data, SPECIALTY %in% filtered_JointKSA)
}
reactive({return(data)})
}
filtered_data <- create_filtered_data(df,
reactive({input$specialty1}),
filtered_JointKSA())
observeEvent(
eventExpr = input$clickJointKSA,
handlerExpr = {
A <- filtered_JointKSA(levels(fct_drop(filtered_data()$`Joint KSA Grouping`))[round(input$clickJointKSA$y)])
A
}
)
Это вызывает у меня ошибку:
"Ошибка в совпадении (x, таблица, nomatch = 0L):
'match' требует аргументов вектора "
Ошибка исчезнет, если я закомментирую, где пытаюсь создать фильтр_данных, но ни один из моих графиков не создается, потому что фильтр_данных () не найден.
Каков правильный подход к этому?
В идеале, я бы хотел, чтобы мои наблюдаемые события были внутри пользовательских функций, а также если у них другой метод.