У меня есть блестящее приложение ниже, в котором пользователь загружает CSV. Затем pickerInput получает уникальные значения первого столбца этого CSV и использует их для подмножества кадра данных и отображения его в таблице. Проблема в том, что я хочу использовать actionButton для применения изменений, но когда CSV загружается в первый раз, он должен отображаться полностью и не отображаться пустым, потому что actionButton еще не запущен. Для целей примера я использовал iris
набор данных вместо CSV.
# app.R ##
library(shiny)
library(DT)
library(shinyWidgets)
ui <- pageWithSidebar(
headerPanel('Iris k-means clustering'),
sidebarPanel(
fileInput("file1", "Choose CSV File",
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv")
),
uiOutput("id"),
actionButton("go","Go")
),
mainPanel(
uiOutput('contents')
)
)
server <- function(input, output, session) {
output$id<-renderUI({
#inFile <- input$file1
#df2<-data.frame(read.csv(inFile$datapath, header = TRUE))
pickerInput("select", "Select ID",
choices = as.character(unique(iris$Species)),
multiple = T,options = list(`actions-box` = TRUE),
selected = as.character(unique(iris$Species)))
})
output$contents <- renderUI({
input$goButton
#inFile <- input$file1
#df<-data.frame(read.csv(inFile$datapath, header = TRUE))
df<-data.frame(iris)
df<-subset(iris,Species %in% isolate(input$select))
renderDataTable({
datatable(
df,
options = list(scrollX = TRUE,pageLength=5)
)
})
})
}
shinyApp(ui = ui, server = server)