Shiny 教程2

作者: Liam_ml | 来源:发表于2019-03-06 16:20 被阅读35次

    这个例子展示了直接打印R对象,以及使用HTML表格显示数据

    运行下列代码,打开第二个例子:

    library(shiny)
    runExample("02_text")
    
    image.png

    hinyexample2

    通过这个例子我们来学习UI和server之间是如何建立联系的。

    我们来查看一下代码:

    # Define UI for dataset viewer app ----
    ui <- fluidPage(
      
      # App title ----
      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") # 这是一个表格输入
          
        )
      )
    )
    

    我们可以看到

    页面布局是默认的布局,边栏布局
    UI中有两个部件selectInput和numericInput,选择输入和数字输入
    有两个输出: verbatimTextOutput(“summary”),tableOutput(“view”),这两个输出对应的ID分别是“summary”和“view”

    两个UI部件selectInput和numericInput,这两个部件的ID分别是dataset 和obs

    Server

    #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({ # 输出一个summary,这是一个R对象
        dataset <- datasetInput()
        summary(dataset)
      })
      
      # Show the first "n" observations ----
      output$view <- renderTable({ # 另外一个输出
        head(datasetInput(), n = input$obs)
      })
      
    }
    

    输入:

    UI中selectInput部件对应的数据为input$dataset
    UI中numericInput部件对应的数据为input$obs
    

    输出:

     1.verbatimTextOutput(“summary”),server中对应的是outputsummary2.tableOutput("view"),server中对应的是outputview
    

    render函数

    1.输出通过render函数进行传递,举例而言,renderPrintsummary(dataset)赋值给了outputsummary2.renderTablehead(datasetInput(),n=inputobs)的 结果为赋值给了output$view

    总结:

    UI中的元素都存在一个ID,server通过ID进行提取,例如,inputobs或则 output$summary
    输出通过render函数进行传递

    相关文章

      网友评论

        本文标题:Shiny 教程2

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