专栏首页优雅R「R」第一个Shiny应用(二) 添加控件

「R」第一个Shiny应用(二) 添加控件

控件包括 UI服务器两方面。

  • fluidPage() 是布局函数,建立页面的基本可视化结构。
  • selectInput() 是让用户可以选择的输入控件。
  • verbatimTextOutput() 和 tableOutput() 是告诉 Shiny 对输出进行渲染的控件,前者展示代码,后者展示表格。
## 导入 Shiny 包
library(shiny)

ui = fluidPage(
  ## UI 控件一般使用
  ## xxInput:用于用户输入
  ## 或
  ## xxOutput:用于结果展示
  selectInput("dataset", label = "Dataset",
              choices = ls("package:datasets")),
  verbatimTextOutput("summary"),
  tableOutput("table")
)


server = function(input, output, session) {
  ## input 指代输入命名空间
  ## 如 input$dataset 指代来自用户输入(UI)ID 为 dataset 的数据
  ## output 指代输出命名空间
  ## 如 output$summary 指代输出给 UI 使用的数据,summary 是 ID

  ## Server 行为一般使用
  ## renderXXX 告诉服务器如何输出结果
  ##   output$ID <- renderTYPE({
  ##   # 生成输出的表达式
  ## })
  output$summary = renderPrint({
    dataset = get(input$dataset, "package:datasets", inherits = FALSE)
    summary(dataset)
  })
  
  output$table = renderTable({
    dataset = get(input$dataset, "package:datasets", inherits = FALSE)
    dataset
  })
}

## 运行 Shiny
shinyApp(ui, server)

生成的 Shiny 如下。

图1-界面展示

图2-数据集选择

本文分享自微信公众号 - 优雅R(elegant-r),作者:王诗翔

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 「R」Shiny:响应式编程(二)响应式编程

    一个网页应用仅有输入控件或输出控件无疑是枯燥的。Shiny 真正的魔法在于它同时包含两者。

    王诗翔呀
  • 「R」Shiny:响应式编程(一)server 函数

    在前面的文章中,我们介绍了如何创建用户界面。现在我们将内容转向对于 Shiny 服务端的讨论,它会让我们在运行时中使用R代码让用户界面栩栩如生。

    王诗翔呀
  • 「Workshop」第七期:Snakemake 介绍

    snakemake由不同的rule组成,每一个rule执行一个任务,通过不同的rule串联完成流程,snakemake还支持断点重启。

    王诗翔呀
  • (11)仿写bowtie-生信菜鸟团博客2周年精选文章集

    然后仿写了bowtie,对我的编程技术提高非常有帮助。目录如下: 自己动手写bowtie第一讲:BWT算法详解并建立索引 自己动手写bowtie第二讲:优化索引...

    生信技能树
  • 【BK】一文了解交叉熵(CrossEntropyLoss)

    在使用pytorch深度学习框架,计算损失函数的时候经常会遇到这么一个函数:nn.CrossEntropyLoss()。该损失函数结合了nn.LogSo...

    ShuYini
  • BSCAN

    Boundary-scan is an integrated method for testing interconnects on printed circu...

    瓜大三哥
  • Go语言函数间传递切片的问题

    Go 语言函数间传递切片,也是在函数间以值传递的方式进行的,由于切片的大小比较小,在函数间复制和传递的成本是比较低的。

    runzhliu
  • 技术再好,能阻止暴力视频的疯传吗?

    大数据文摘
  • Python实现控制台密码星号输入

    Note:这种方法很安全,但是看不到输入的位数,让人看着有点不太习惯,而且没有退格效果。

    周小董
  • 还在纠结 Flux 或 Relay,或许 Redux 更适合你

    时见疏星

扫码关注云+社区

领取腾讯云代金券