我是闪亮的新手,我想提出一个可能是错误的(理论上的?)问题,但无论如何,在搜索后我想知道。
selectinput()
您可以使用基于此数据框创建的 a 的值来对反应性数据框进行子集化吗?这对我来说似乎是一个悖论,因为每次更新数据框时也会更新selectinput()
。我将使用我的想法的一个小例子来帮助别人理解。可能我问的是天真,但我想知道。
location = c("100 ail","16th and Whitmore","40AB01 - ANTWERPEN","Abington")
last = c("2018-02-01 09:30:00", "2018-02-01 03:00:00", "2017-03-07 10:00:00","2018-02-01 03:00:00")
first = c("2015-09-01 00:00:00","2016-03-06 19:00:00","2016-11-22 15:00:00","2016-06-09 19:00:00")
locations = data.frame(location, last, first)
library(shiny)
library(shinythemes)
library(htmltools)
library(DT)
library(utilr)
library(openair)
library(dplyr)
library(ropenaq)
library(worldmet)
ui = fluidPage(theme = shinytheme("slate"),
# title
titlePanel("Select Dates of interest and location"),
# first row; This allows a user to enter their start and stop dates
fluidRow(
column(3, wellPanel(
)
),
column(3, wellPanel(
)
),
column(
width = 6
)
),
fluidRow(
tabsetPanel(
type = "tabs",
# summary tab
tabPanel(
" Select Dates and Location",
uiOutput("loc"),
uiOutput("dt"),
shiny::dataTableOutput("merged")
),
# scenario tab. Needs work. Panel should include a summary of user choices (selected on previous panels) and then
# allow a user to enter their email address. An action button would be pressed to create the output from OpenAir.
tabPanel(
"Selection Summary and Process Data",
fluidRow(
# actionButton("goButton", "OpenAir Local!"),
# helpText("When you click the button above, you should see",
# "the output below update to reflect the value you",
# "entered at the top:"),
)
)
)
)
)
#server.r
server = function(input, output, session) {
#initial selectinput to create the initial dataframe
output$loc<-renderUI({
selectInput("loc", label = h4("Choose location"),
choices = locations$location ,selected = 1
)
})
rt<-reactive({
#dataframe creation
AQ<- aq_measurements(location = input$loc)
)
met <- importNOAA(year = 2014:2018)
colnames(AQ)[9] <- "date"
merged<-merge(AQ, met, by="date")
merged$location <- gsub( " " , "+" , merged$location)
merged
})
#selectinput based on the dataframe
output$dt<-renderUI({
selectInput("dt", label = h4("Choose Dates"),
choices = as.character(rt()[,1]),
selected = 1,
multiple = T)
})
#attempt to create a datatable by subseting the dataframe by the choices of selectinput
output$merged <- shiny::renderDataTable({
a <- subset(rt(), rt()[,1] %in% input$dt)
})
}
shinyApp(ui, server)