这个例子展示了直接打印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
函数进行传递,举例而言,renderPrint
将summary(dataset)
赋值给了outputsummary2.renderTable
将head(datasetInput(),n=inputobs)
的 结果为赋值给了output$view
总结:
UI
中的元素都存在一个ID,server
通过ID进行提取,例如,inputobs
或则 output$summary
输出通过render函数进行传递
网友评论