我有以下数据,我正在尝试制作一组下拉过滤器,根据过滤器中选择的内容改变显示的数据帧:
myData<- structure(list(waterbody = c("Homer", "Homer", "Homer", "Homer",
"West", "West", "West", "East", "East", "East", "East", "Walnut",
"Walnut", "Walnut", "Walnut"), transect_number = c(1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), species = c("LMB",
"LMB", "GZS", "BLG", "LMB", "GZS", "BLG", "BLG", "BLG", "GZS",
"BLG", "BLG", "LMB", "GZS", "LMB"), length_mm = c(430L, 430L,
NA, 165L, 345L, NA, 128L, 117L, 93L, NA, 135L, 161L, 402L, NA,
347L), wt_g = c(1270L, 1325L, NA, 108L, 545L, NA, 40L, 28L, 15L,
NA, 42L, 81L, 865L, NA, 525L)), row.names = c(NA, -15L), class = "data.frame")
此外,每个后续过滤器中的选项应根据在上一个过滤器中选择的内容进行更改。因此,可供选择的物种将根据选择的水体而变化(因为并非所有物种都出现在每个水体中)。
到目前为止,我的代码是:
# User Interface
ui <- shinyUI(
fluidPage(
titlePanel("File Inputs"),
sidebarLayout(
sidebarPanel(
fileInput(
'data',
'Choose CSV File',
accept = c('text/csv',
'text/comma-separated-values,text/plain',
'.csv')
),
uiOutput("pick_waterbody"),
uiOutput("pick_species")
),
mainPanel(DT::dataTableOutput('dt_table'),)
)
)
)
# Server
server <- function(input, output, session) {
myData <- reactive({
inFile <- input$data
if (is.null(inFile))
return(NULL)
data <- read.csv(inFile$datapath, header = T)
data
})
output$dt_table <- DT::renderDataTable({
DT::datatable(myData())
})
output$pick_waterbody <- rednderUI({
pickerInput(
"pick_waterbody",
"Water(s) of Interest:",
choices = unique(myData$waterbody),
options = list(`actions-box` = TRUE),
)}
)
output$pick_species <- renderUI({
updatePickerInput(
"pick_species",
"Species of Interest:",
choices = as.character(myData[myData$waterbody == input$pick_waterbody, "species"]),
options = list(`actions-box` = TRUE))
})
}
当关闭服务器代码后
output$dt_table
,该应用程序运行良好。但当我把
output$pick_waterbody
代码我得到一个“找不到函数”错误。此外
output$pick_species
代码显示发现了意外的符号。我已经把它梳理了1000遍,但我似乎无法解决这些问题。
如果能帮我找出我的错误所在,我将不胜感激。