前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shiny学习(四)||响应式输出

Shiny学习(四)||响应式输出

作者头像
生信编程日常
发布2020-05-18 22:53:19
1.6K0
发布2020-05-18 22:53:19
举报
文章被收录于专栏:生物信息学、python、R、linux

Shiny应用程序中控件选中的值可以通过生成响应式输出来显示。用户切换控件的值,输出的文本也随着控件的值自动响应。 如下是两个小控件,分别用来展示 variable to display和Range of interest,此时选中是没有响应式输出。

代码语言:javascript
复制
ui <- fluidPage(
  titlePanel("censusVis"),
  
  sidebarLayout(
    sidebarPanel(
      helpText("Create demographic maps with 
               information from the 2010 US Census."),
      
      selectInput("var", 
                  label = "Choose a variable to display",
                  choices = c("Percent White", 
                              "Percent Black",
                              "Percent Hispanic", 
                              "Percent Asian"),
                  selected = "Percent White"),
      
      sliderInput("range", 
                  label = "Range of interest:",
                  min = 0, max = 100, value = c(0, 100))
    ),
    
    mainPanel(
      textOutput("selected_var")
    )
  )
)

# Define server logic ----
server <- function(input, output) {
  
}

# Run the app ----
shinyApp(ui = ui, server = server)

下面将添加对控件值的响应。

创建响应式输出主要分为两步:

1.将R对象添加到ui用户界面。 2.在server中构建响应式对象并调用控件的值。

步骤1:将R对象添加到UI

Shiny提供了一系列函数,可将R对象转换为用户界面的输出。每个函数都会创建特定类型的输出。

每个render*函数都有一个参数:R表达式用花​​括号括起来{}。表达式可以是一行简单的文本,也可以包含一组指令。表达式可以返回想到的对象(一段文本,一个图,一个数据框等)。

例如返回一段文字: 上述ui代码中textOutput它带有一个参数,即字符串"selected_var"。一般放在ui中的sidebarPanel或mainPanel。每个*Output函数都需要一个参数:一个Shiny将用于反应的元素名称的字符串。

步骤2:提供R代码来构建对象。

在ui中设置Shiny在哪里显示对象后,接下来,需要告诉Shiny如何构建对象。为此,需要在server函数中构建对象。server会建立一个output的list,其中包含更新R对象的代码。可以通过server中的output定义一个输出元素,元素名称应与ui中创建的反应性元素的名称一致。

如下:在server中output$selected_var与ui中的textOutput("selected_var") 是一致的。在server中添加renderText函数并添加固定的一段文字,则返回这一段文字。

代码语言:javascript
复制
server <- function(input, output) {
  
  output$selected_var <- renderText({ 
    "You have selected this"
  })
  
}
响应控件的值

上述反应的输出是一段固定文字,动态响应小控件的值,还需要引入inputserver函数包含2个参数,inputoutputoutput作为一个类似列表的对象,存储了在应用程序中构建R对象。input是也是一个类似列表的对象。它存储控件的当前值。这些值来自ui中小控件的名称。 响应第一个控件:添加input$var

代码语言:javascript
复制
server <- function(input, output) {
  
  output$selected_var <- renderText({ 
    paste("You have selected", input$var)
  })
  
}

响应第二个控件:在ui中添加range的textOutput,并在server中添加output为input$range。

代码语言:javascript
复制
ui <- fluidPage(
  titlePanel("censusVis"),
  
  sidebarLayout(
    sidebarPanel(
      helpText("Create demographic maps with 
               information from the 2010 US Census."),
      
      selectInput("var", 
                  label = "Choose a variable to display",
                  choices = c("Percent White", 
                              "Percent Black",
                              "Percent Hispanic", 
                              "Percent Asian"),
                  selected = "Percent White"),
      
      sliderInput("range", 
                  label = "Range of interest:",
                  min = 0, max = 100, value = c(0, 100))
    ),
    
    mainPanel(
      textOutput("selected_var"),
      textOutput("min_max")
    )
  )
)

# Define server logic ----

server <- function(input, output) {
  
  output$selected_var <- renderText({ 
    paste("You have selected", input$var)
  })
  
  output$min_max <- renderText({ 
    paste("You have selected",input$range)
  })
  
  
  
}
# Run the app ----
shinyApp(ui = ui, server = server)

参考: https://shiny.rstudio.com/tutorial

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建响应式输出主要分为两步:
  • 步骤1:将R对象添加到UI
  • 步骤2:提供R代码来构建对象。
  • 响应控件的值
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档