数据-R语言-图表-决策-Linux-PythonR语言做生信

Shiny 教程2

2019-03-06  本文已影响35人  Liam_ml

这个例子展示了直接打印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函数进行传递

上一篇 下一篇

猜你喜欢

热点阅读