library(data.table)
library(shiny)
defaultdisplay<-list(
width="100%", height="75%"
)
shinyAppDir(
system.file("examples/06_tabsets", package="shiny"),
options = defaultdisplay
)
A shiny application report consists of two functions:
shinyServer()
shinyUI()
One says what to execute and the other states how to present it. Do all data manipulation, chart production in shinyServer()
defaultdisplay<-list(width="100%", height="75%")
shinyApp(
ui = fluidPage(),
, server = function(input, output) {}
, options = defaultdisplay
)
You typically split into two files:
shinyServer()
shinyUI()
This can then be run with runApp()
You can do a single file example app.R
which contains both functions but this is typically better for very short apps.
Use these just inside shinyUI()
to produce a layout
## Page Types
## 1: basicPage
## 2: bootstrapPage
## 3: fillPage
## 4: fixedPage
## 5: fluidPage
## 6: navbarPage
## 7: updateNavbarPage
shinyApp(
ui = fluidPage(dateInput("datePicker", "Pick a date:",
format="dd/mm/yy"),
dateRangeInput("dateRange", "Pick dates:",
start=Sys.Date(),
end=Sys.Date() ) ),
server = function(input, output) {}
,options = defaultdisplay
)
Basic
shinyApp(
ui = fluidPage(numericInput("vals", "Insert a number:",
value=15, min=10) ),
server = function(input, output) {}
,options = defaultdisplay
)
Sliders
shinyApp(
ui = fluidPage(sliderInput("vals", "Insert a number:",
min=0, max=50, value=15) ),
server = function(input, output) {}
,options = defaultdisplay
)
A single line
shinyApp(
ui = fluidPage(textInput("char", "Insert text:") ),
server = function(input, output) {}
,options = defaultdisplay
)
A paragraph
shinyApp(
ui = fluidPage(tags$textarea(id="charbox", rows=3,
cols=40, "Default value") ),
server = function(input, output) {}
,options = defaultdisplay
)
shinyApp(
ui = fluidPage(selectInput("multiselect", "Pick favourites:",
c("Green","Red","Blue"),
multiple=TRUE) ),
server = function(input, output) {}
,options = defaultdisplay
)
## Input controls
## 1: checkboxGroupInput
## 2: checkboxInput
## 3: dateInput
## 4: dateRangeInput
## 5: fileInput
## 6: numericInput
## 7: passwordInput
## 8: registerInputHandler
## 9: removeInputHandler
## 10: restoreInput
## 11: selectInput
## 12: selectizeInput
## 13: sliderInput
## 14: textAreaInput
## 15: textInput
## 16: updateCheckboxGroupInput
## 17: updateCheckboxInput
## 18: updateDateInput
## 19: updateDateRangeInput
## 20: updateNumericInput
## 21: updateSelectInput
## 22: updateSelectizeInput
## 23: updateSliderInput
## 24: updateTextAreaInput
## 25: updateTextInput
## Input controls
shinyApp(
ui = fluidPage(textInput("char", "Insert text:") ,
textOutput("text") ),
server = function(input, output) {
output$text <- renderText(input$char)
} ,options = defaultdisplay
)
shinyApp(
ui = fluidPage(tableOutput("basictable") ),
server = function(input, output) {
output$basictable <- renderTable(head(iris,5))
} ,options = defaultdisplay
)
shinyApp(
ui = fluidPage(dataTableOutput("datatable") ),
server = function(input, output) {
output$datatable <- renderDataTable(head(iris,5))
} ,options = defaultdisplay
)
shinyApp(
ui = fluidPage(plotOutput("chart") ),
server = function(input, output) {
output$chart <- renderPlot(pairs(iris))
} ,options = defaultdisplay
)
a <- reactive({input$a})
a
shinyApp(
ui = fluidPage(textInput("char", "Insert text:") ,
textOutput("textA"),textOutput("textB") ),
server = function(input, output) {
char<-reactive({rep(input$char,5)})
output$textA <- renderText(paste(char(),collapse="+"))
output$textB <- renderText(paste(char(),collapse="-"))
}
,options = defaultdisplay
)
shinythemes
rvest
shiny::runApp()
shinyApps
package