Я пытаюсь вернуть вектор символов, созданный в реактивном выражении в Shiny.Однако, когда я запускаю приложение, я получаю следующее:
Ошибка: не удалось найти функцию "check_case"
check_case
- это реактивное выражение, а нефункция.
Я вижу несколько вопросов от людей с похожими проблемами, но ответы, кажется, не соответствуют этому (например, отсутствие скобок при вызове реактивного выражения; вызов чего-то, что не было возвращено вреактивное выражение).
Я попытался немедленно перевести check_case()
в символьный вектор в выводе перед использованием paste
.Я также попытался добавить дополнительные аргументы в paste
, чтобы он включал sep =
и collapse =
, на случай, если это является частью проблемы, но это не меняет результат, который я получаю.
В настоящее время у меня есть две теории:
- Существует проблема в способе использования реактивного выражения для возврата символьного вектора.Обычно я использую их для возврата фреймов данных, поэтому здесь может быть что-то, чего мне не хватает.
- Существует проблема в способе использования
paste
для ссылки на символьный вектор.
Код:
library(shiny)
library(shinydashboard)
sidebar <- dashboardSidebar(
selectInput(
"case_select", label = "Select case",
choices = c("Upper", "Lower")
)
)
body <- dashboardBody(
fluidRow(
htmlOutput("text"))
)
ui <- dashboardPage(dashboardHeader(title = "Example"),
sidebar,
body
)
server <- function(input, output) {
output$check_case <- reactive({
if (input$case_select == "Upper") {
case_list <- c("A", "B", "C")
} else {
case_list <- c("a", "b", "c")
}
return(case_list)
})
output$text <- renderUI({
check_case <- check_case()
HTML(paste(check_case, sep = "", collapse = ""))
})
}