[shiny 2]

作者: 一路向前_莫问前程_前程似锦 | 来源:发表于2020-07-02 10:03 被阅读0次

    ui 用户自定义界面设置
    server 服务端脚本

    Shiny Text这个应用程序展示的是直接打印R对象,以及用HTML表格展示数据框。要运行例子程序,只需键入:

    runExample("02_text")
    

    前面那个例子里用一个滑动条来输入数值,并且输出图形。而这个例子更进了一步:有两个输入,以及两种类型的文本输出。

    如果你改变观测个数, 将会发现Shiny应用程序的一大特性:输入和输出是结合在一起的,并且“实时”更新运算结果(就像Excel一样)。 在这个例子中,当观测个数发生变化时,只有表格更新,而不需要重新加载整个页面。

    下面是用户界面定义的代码。请注意,"sidebarPanel" 和 "mainPanel" 的函数调用中有两个参数(对应于两个"输入" 和 两个 "输出").
    ui.R

    library(shiny)
    
    # Define UI for dataset viewer app ----
    ui <- fluidPage(
    
      # App title app标题 ----
      titlePanel("Shiny Text"),
    
      # Sidebar layout with a input and output definitions 带有输入和输出定义的边栏布局----
      sidebarLayout(
    
        # Sidebar panel for inputs  用于输入的侧栏面板----
        sidebarPanel(
    
          # Input: Selector for choosing dataset ----
          selectInput(inputId = "dataset",
                      label = "Choose a dataset:",
                      choices = c("rock", "pressure", "cars")),
    
          # Input: Numeric entry for number of obs to view ----
          numericInput(inputId = "obs",
                       label = "Number of observations to view:",
                       value = 10)
        ),
    
        # Main panel for displaying outputs ----
        mainPanel(
    
          # Output: Verbatim text for data summary ----
          verbatimTextOutput("summary"),
    
          # Output: HTML table with requested number of observations ----
          tableOutput("view")
    
        )
      )
    )
    
    

    服务端的程序要稍微复杂一点。现在,我们创建:

    一个反应性表达式来返回用户选择的相应数据集。
    还有两个渲染表达式(rendering expressions,分别是renderPrint 和renderTable),以返回 output$summaryoutput$view 的值。
    这些表达式和第一个例子中的 renderPlot 运作方式类似:通过声明渲染表达式,你也就告诉了shiny,一旦渲染表达式所依赖的值(在这里例子中是两个用户输入值的任意一个:input$datasetinput$n)发生改变,表达式就会执行。。

    # Define server logic to summarize and view selected dataset ----
    server <- function(input, output) {
    
      # Return the requested dataset ----
      datasetInput <- reactive({
        switch(input$dataset,
               "rock" = rock,
               "pressure" = pressure,
               "cars" = cars)
      })
    
      # Generate a summary of the dataset ----
      output$summary <- renderPrint({
        dataset <- datasetInput()
        summary(dataset)
      })
    
      # Show the first "n" observations ----
      output$view <- renderTable({
        head(datasetInput(), n = input$obs)
      })
    
    }
    
    

    Create Shiny app ----

    shinyApp(ui = ui, server = server)

    相关文章

      网友评论

          本文标题:[shiny 2]

          本文链接:https://www.haomeiwen.com/subject/vvdlqktx.html