shiny教程一 -- shiny入门

2023-10-27

Shiny是一个R软件包,可轻松从R直接构建交互式Web应用程序。本课程将使您立即开始构建Shiny应用程序。

如果还未安装Shiny软件包,打开R会话窗,确保联网状态,然后运行

install.packages("shiny")

在这里插入图片描述
Shiny软件包具有11个内置示例,每个示例都演示Shiny的工作方式。 且每个都是独立的Shiny应用程序。

“Hello Shiny”示例绘制了R的 faithful 数据集的直方图,并带有可配置数量的bin。 用户可以使用滑杆更改bin的数量,该应用程序将立即响应他们的输入。 您将使用Hello Shiny来探索Shiny应用程序的结构并创建您的第一个应用程序。
要运行“Hello Shiny”,请输入:

library(shiny)
runExample("01_hello")

Shiny应用程序的结构

shiny的应用程序包含在一个名为app.R的脚本中。脚本app.R位于目录(例如newdir/)中,并且可以使用 runApp(“newdir”) 运行该应用程序。

app.R具有三个组成部分:

  • 用户界面对象
  • 服务器功能
  • 调用 shinyApp 函数

用户界面(ui)对象控制应用程序的布局和外观。server功能包含计算机构建应用程序所需的说明。最后,shinyApp函数根据显式的UI/server对创建Shiny应用程序对象。

注意:在0.10.2版之前,Shiny不支持单文件应用程序,并且ui对象和server功能需要包含在分别称为ui.R和server.R的单独脚本中。 Shiny仍支持此功能,但是本教程和许多支持文档都集中在单文件应用程序上。

关于单文件应用程序的一个不错的功能是,您可以将整个应用程序复制并粘贴到R控制台中,这使得轻松快速共享代码供其他人进行试验变得容易。例如,如果将上面的代码复制并粘贴到R命令行中,它将启动Shiny应用程序。

ui
这是Hello Shiny示例的ui对象。

library(shiny)

# Define UI for app that draws a histogram ----
ui <- fluidPage(

  # App title ----
  titlePanel("Hello Shiny!"),

  # Sidebar layout with input and output definitions ----
  sidebarLayout(

    # Sidebar panel for inputs ----
    sidebarPanel(

      # Input: Slider for the number of bins ----
      sliderInput(inputId = "bins",
                  label = "Number of bins:",
                  min = 1,
                  max = 50,
                  value = 30)

    ),

    # Main panel for displaying outputs ----
    mainPanel(

      # Output: Histogram ----
      plotOutput(outputId = "distPlot")

    )
  )
)

server
这是Hello Shiny示例的server功能。

# Define server logic required to draw a histogram ----
server <- function(input, output) {

  # Histogram of the Old Faithful Geyser Data ----
  # with requested number of bins
  # This expression that generates a histogram is wrapped in a call
  # to renderPlot to indicate that:
  #
  # 1. It is "reactive" and therefore should be automatically
  #    re-executed when inputs (input$bins) change
  # 2. Its output type is a plot
  output$distPlot <- renderPlot({

    x    <- faithful$waiting
    bins <- seq(min(x), max(x), length.out = input$bins + 1)

    hist(x, breaks = bins, col = "#75AADB", border = "white",
         xlab = "Waiting time to next eruption (in mins)",
         main = "Histogram of waiting times")

    })

}

一方面,Hello Shiny server功能非常简单。 该脚本会进行一些计算,然后绘制带有所需bins的直方图。

但是,您还会注意到,大多数脚本都包含在对renderPlot的调用中。 函数上方的注释对此有所解释,但是如果您感到困惑,请不要担心。 我们将在稍后详细介绍这个概念。

使用Hello Shiny应用程序并查看源代码。 尝试对应用程序的工作方式有所了解。 但是在执行此操作之前,请注意,在您的app.R文件中,您需要从加载Shiny包开始,并以调用ShinyApp结尾:

library(shiny)

# See above for the definitions of ui and server
ui <- ...

server <- ...

shinyApp(ui = ui, server = server)

Hello Shiny应用程序处于活动状态时,您的R会话将很忙,因此您将无法运行任何R命令。 R正在监视应用程序并执行应用程序的反应。 要恢复R会话,请按Escape键或单击“停止标志”图标(位于RStudio控制台面板的右上角)。

运行一个应用程序

每个Shiny应用程序都具有相同的结构:包含ui和server的app.R文件。 您可以通过创建新目录并在其中保存一个app.R文件来创建Shiny应用程序。 建议每个应用程序都位于其自己的唯一目录中。

您可以通过将其目录名称传参给函数runApp来运行Shiny应用程序。 例如,如果您的Shiny应用程序位于名为my_app的目录中,请使用以下代码运行它:

library(shiny)
runApp("my_app")

注意:runApp与R中的read.csv,read.table和许多其他函数类似。runApp的第一个参数是从工作目录到应用程序目录的文件路径。 上面的代码假定app目录位于您的工作目录中。 在这种情况下,文件路径仅是目录的名称。

(如果您想知道,Hello Shiny应用程序的文件将保存在一个名为“01_hello”的特殊系统目录中。该目录旨在与runExample(“01_hello”)调用一起使用。)

小试牛刀

在您的工作目录中创建一个名为App-1的新目录。 然后将上面的app.R脚本复制并粘贴到您的目录中(Hello Shiny中的脚本)。 完成后,目录应如下所示:
在这里插入图片描述
通过运行runApp(“App-1”) 启动您的应用程序。 然后单击转义并对您的应用程序进行一些更改:

  1. 将标题从“Hello Shiny!”更改为 转到“ Hello World!”。
  2. 将滑杆的最小值设置为5。
  3. 将直方图边框颜色从“white”更改为“orange”。

准备就绪后,再次启动您的应用程序。 您的新应用应与下图匹配。 如果不是,或者您想检查代码,请按模型答案按钮以显示我们如何完成这些任务。
在这里插入图片描述
默认情况下,Shiny应用程序以“normal”模式显示,如上图所示。 Hello Shiny和其他内置示例以“showcase mode”显示,这是与app.R脚本一起显示的另一种模式。

如果您希望您的应用以展示模式显示,则可以运行 runApp(“App-1”,display.mode = “showcase”) 。

重新启动应用

要重新启动您的Shiny应用程序,请执行以下操作:

  • 运行 runApp(“ App-1”) ,或
  • 在RStudio编辑器中打开app.R脚本。 RStudio将识别Shiny脚本并提供一个Run App按钮(在编辑器顶部)。 单击此按钮以启动您的应用程序,或使用键盘快捷键:Command + Shift + Enter(在Windows上为Control + Shift + Enter)。
    在这里插入图片描述
    RStudio默认情况下会在新窗口中启动该应用程序,但您也可以选择在专用的查看器窗口或外部Web浏览器中启动该应用程序。 通过单击“Run App”旁边的图标进行选择。
    在这里插入图片描述

回顾

创建自己的Shiny应用程序步骤:

  • 为您的应用程序创建一个名为 myapp/ 的目录。
  • 将您的app.R脚本保存在该目录中。
  • 使用runApp或RStudio的键盘快捷键启动应用。
  • 单击escape以退出Shiny应用程序。

走得更远

您可以通过复制和修改现有的Shiny应用程序来创建Shiny应用程序。 Shiny画廊提供了一些很好的示例,或者使用下面列出的十一个预构建的Shiny示例。

runExample("01_hello")      # a histogram
runExample("02_text")       # tables and data frames
runExample("03_reactivity") # a reactive expression
runExample("04_mpg")        # global variables
runExample("05_sliders")    # slider bars
runExample("06_tabsets")    # tabbed panels
runExample("07_widgets")    # help text and submit buttons
runExample("08_html")       # Shiny app built from HTML
runExample("09_upload")     # file upload wizard
runExample("10_download")   # file download wizard
runExample("11_timer")      # an automated timer

每个都展示了Shiny应用程序的功能。 所有“ Shiny”示例应用程序均以“showcase”模式打开(显示屏中显示app.R脚本)。

但是,为什么要限制自己复制其他应用程序呢? 接下来的几课将向您展示如何从头开始构建自己的Shiny应用程序。 您将了解Shiny应用程序的每个部分,并通过在线部署自己的Shiny应用程序来完成。

准备就绪后,请继续学习下一节,在这里您将学习如何构建Shiny应用程序的布局和外观。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shiny教程一 -- shiny入门 的相关文章

  • 在 Shiny 应用程序中更改 bsModal 的背景

    我正在开发一个 Shiny 应用程序 我需要确保最终用户不会意外关闭 bsModal 因为它上面有一些操作按钮 我做了一些研究并了解到我需要覆盖背景和键盘参数 但即使我看到了一些建议 我也不知道这到底需要放在我的代码中的哪里 我不精通 Ja
  • 闪亮的传单添加大量分离的折线

    我有一个 200k 行数据集 其中包含出发地和目的地的坐标 我有一个 R 闪亮的应用程序 带有传单地图 可以在这些坐标上显示圆圈 尽管坐标数量很大 但效果很好 这是数据的简化示例 每行包含出行id 出发地经纬度 目的地经纬度 id lat
  • 为什么表达式“1”==1 的计算结果为 TRUE? [复制]

    这个问题在这里已经有答案了 1 是字符值 其他1是数字 甚至 当我尝试在下面执行时 它给了我 TRUE as character 0 as numeric 0 谁能帮助我理解 为什么 来自help 如果两个参数是不同类型的原子向量 则其中一
  • 正则表达式在 R 中同时多次包含字母/特殊字符时删除单词

    我想删除那些单词中字母 特殊字符的数量同时出现两次以上的单词 例如 输入就像 Google in theee lland of whhhat c c and e 输出应该是 Google in lland of c c and x lt G
  • 使用 xtable 对乳胶输出的表进行排序

    我正在尝试生成一个排序表并导出到乳胶中 然而 xtable 似乎无法处理排序表 建议 a lt sample letters 500 replace T b lt table a c lt sort table a decreasing T
  • 有没有一种明智的方法可以在 R 中执行诸如文档字符串之类的操作?

    这不仅仅是一个编码风格问题 如果您了解 python 我认为 Ruby 也有类似的东西 您可以在函数中拥有文档字符串 这样您就可以通过发出 help 命令轻松获取该字符串 例如 def something t None Do somethi
  • “条件长度 > 1 并且仅使用第一个元素”错误

    我对 f 语句有疑问 因为它返回给我以下错误消息 条件长度 gt 1 并且仅使用第一个元素 我有一个名为 data summary 的数据框 我想创建两个新变量vol up and vol down取决于我的数据框的其他变量 这是我的脚本代
  • rpy2 无法加载外部库

    希望有人能帮忙解决这个问题 R版本 2 14 1rpy2版本 2 2 5蟒蛇版本 2 7 3 一直在尝试在 python 脚本中使用 rpy2 加载 R venneuler 包 该包以 rJava 作为依赖项 venneuler 和 rJa
  • 使用 alpha 通道叠加两个 ggplot2 stat_密度2d 图

    我想叠加两个ggplot2使用 alpha 通道进行绘图 结果图像显示两个数据集 这是我的测试数据 data read table text P1 1 0 4 nP2 0 0 2 nP3 2 1 8 nP4 2 2 6 nP5 0 5 2
  • 将 r 中的一列从出生日期更改为年龄

    我是第一次使用 data table 我的表中有大约 400 000 个年龄的列 我需要将它们从出生日期转换为年龄 做这个的最好方式是什么 我一直在思考这个问题 到目前为止对这两个答案都不满意 我喜欢用lubridate 就像 KFB 所做
  • pandoc 文档转换失败,错误 67

    我使用的是 R 3 3 2 和 Rstudio 版本 1 0 44 这是我的 RMarkdown 文件的格式 title Sentiment Analysis output rmdformats material highlight kat
  • 在 mutate pipeline 中按组获取唯一 ID [重复]

    这个问题在这里已经有答案了 自从新的 dplyr v1 0 0 更新发布以来 我注意到该功能group indices 有 已弃用 我在工作中经常使用这个功能 并且我喜欢在mutate 例如使用dplyr v0 8 3我能够非常轻松地做这样
  • 使用插入符号完全可重现的并行模型

    当我在插入符中运行 2 个随机森林时 如果设置随机种子 我会得到完全相同的结果 library caret library doParallel set seed 42 myControl lt trainControl method cv
  • 计算数据集列的百分位数

    最亲爱的 R 专家 为您快速介绍一下 我正在做一项作业 在这个练习中 我被要求从数据中获取基本统计数据infert数据集 它是内置的 特别是其中的一列 infert age 对于不熟悉数据集的人 gt table ages Which is
  • 使用 writeLines 将变量写入文件

    我发现此链接对于理解如何将行写入文件非常有帮助 将文本行写入 R 中的文件 https stackoverflow com questions 2470248 write lines of text to a file in r 不幸的是
  • 词云中的空格

    我目前将 wordle 用于词云的许多艺术用途 我认为 R 的词云可能具有更好的控制能力 1 如何在词云中保持单词大写 解决了 2 如何将两个单词作为一个块保留在词云中 wordle 使用 运算符来完成此操作 R 的词云仅按原样打印 例如
  • 从数据帧创建 sf 多边形

    我有一个包含一组多边形坐标的数据框 这就是我将其转换为spatialPolygons 包sp 的方法 my df lt data frame Plot c A A A A A B B B B B Corner c SW NW NE SE S
  • 可以使用部分名称访问列表成员吗?这是一个功能吗?

    考虑这个 R 代码 gt l list key 1 gt l k 1 1 gt l ke 1 1 gt l k NULL gt names l 1 key 这是否意味着您可以使用以下方式访问列表成员 及其部分名称 当我在一次令人沮丧的错误搜
  • R 连接到主机时出错

    我已经安装了 R 3 0 2 和包KEGGREST 在使用它的命令时 我收到以下错误 函数错误 类型 消息 asError TRUE 无法连接到 主持人 使用 internet2 选项后 我可以很好地从互联网安装软件包 该选项使用来自 In
  • 将数据帧单列中的值向上移动

    使用这样的示例数据 example data frame x c 1 2 3 4 5 6 7 8 y c 1 2 3 4 5 6 7 8 z c 1 2 3 4 5 6 7 8 看起来像这样 x y z 1 1 1 1 2 2 2 2 3

随机推荐

  • abp Application层获取请求的Header内容

    abp 如何在应用层返回header自定义的内容 参考 https blog csdn net u012659600 article details 99579369 首先在AppService中注入HttpContextAccessor
  • Ubuntu 更新 CMake 版本

    项目中有时候会出现CMake版本小于最低要求的情况 实际上没有有必要这么高的要求 但是在不能改对方代码的情况下 只能去升级自身的版本了 尝试了网上说的直接update之后再次安装的方式 结果版本号没有改变 sudo apt get upda
  • css文字超出隐藏显示...

    单行 overflow hidden white space nowrap text overflow ellipsis 多行 display webkit box webkit box orient vertical webkit lin
  • Windows10开启Hyper-v并安装Linux CentOS虚拟机

    Windows10开启Hyper v虚拟机配置静态网络 1 Windows10 开启Hyper v 右键单击 Windows 按钮并选择 应用和功能 选择相关设置下右侧的 程序和功能 选择 打开或关闭 Windows 功能 选择 Hyper
  • Element 标签页样式修改

    deep el tabs nav wrap after height 1px deep el tabs item height 50px font size 16px font family PingFang SC font weight
  • Java编程实现Softmax函数功能

    Java编程实现Softmax函数功能 Softmax函数是一种常用的数学函数 广泛应用于机器学习和深度学习领域 尤其在分类问题中起到重要作用 本文将介绍如何使用Java编程实现Softmax函数 并提供相应的源代码 首先 我们来了解一下S
  • centos7启动docker: dial tcp 104.18.123.25:443: i/o timeout.

    在centos7上安装好了docker之后 测试docker是否安装成功 使用官方给出的sudo docker run hello world 解决 再运行一遍命令即可
  • 自定义 scrollview 标头部分的滑动速度慢(scrollview 子控件滑动速度不一致)

    scrollview 子控件滑动速度不一致 先来个布局图 向上滑动时 图片向上划出的速度较下面的蓝色view慢 现在我们先来看布局文件
  • 基于tensorflow的手势检测和手势识别分类

    项目目的 在手机端实现用户手势的检测并且识别用户所做的手势 遇到的问题 首先在手部检测的解决办法中 我尝试过用opencv进行手部识别 但存在的问题是背景对手的识别的影响太大 如果采用颜色进行手和背景的区分的话 又会受到光照等影响 总体而言
  • 【机器学习实战】决策树 python代码实现

    typora copy images to upload 第三章 决策树 3 1决策树的构造 优点 计算复杂度不高 输出结果易于理解 对中间值的缺失不敏感 可以处理不相关的特征数据 缺点 可能会产生过度匹配的问题 适用数据类型 数据型和标称
  • 弱网的概念以及弱网测试

    什么是弱网测试 在当今移动互联网盛行的时代 网络的形态除了有线连接 还有2G 3G Edge 4G Wifi等多种手机网络连接方式 不同的协议 不同的制式 不同的速率 使移动应用运行的场景更加丰富 从测试角度来说 需要额外关注的场景就远不止
  • SpringBoot日志配置【详解】

    文章目录 前言 1 为什么使用Logback 2 Logback使用 2 1 添加依赖 2 2 默认配置 3 logback spring xml详解 3 1 configuration元素 3 2 logger 元素 3 3 root 元
  • 购物商城---页面缓存oscached

    流程图 web xml
  • VC++使用HOOK API 屏蔽PrintScreen键截屏以及QQ和微信默认热键截屏

    转载 http blog csdn net easysec article details 8833457 转载 http www vckbase com module articleContent php id 567 title 用VS
  • 离线安装Docker镜像

    部分线上服务器无法连接公网 或者服务器下载镜像比较慢 遇到这种情况要怎么解决 我们可以在联网的本机或服务器上 将已经下载好的镜像导出 然后导入到没有网络的服务器上 通过Docker加载 例如 这里有一个镜像grafana loki 2 2
  • 订单系统开发

    一 订单系统基本框架的搭建 1 创建maven工程 pom xml文件内容如下
  • WSA with Magisk Root安装配置教程(2023.5)

    前言 最近正式走上了安卓逆向的道路 刚开始尝试了各种模拟器 雷电 夜神 及其海外版 并且安装配置了多次magisk 倒不是说这些模拟器的体验有多差 主要还是不能与 Windows Hype V 共存导致无法使用 WSL 这点让我无法接受 s
  • markdown语法最全汇总

    一 markdown简介 注 如果对markdown有一定了解 可以略过此处 第一章主要对markdown基础知识做个补充 摘自菜鸟教程此处原文档 博客原地址 欢迎收藏访问 1 1 markdown背景 1 markdown是一种轻量级标记
  • 一枚芯片的实际成本是多少?(1)

    芯片的硬件成本构成 芯片的成本包括芯片的硬件成本和芯片的设计成本 芯片硬件成本包括晶片成本 掩膜成本 测试成本 封装成本四部分 像ARM阵营的IC设计公司要支付给ARM设计研发费以及每一片芯片的版税 但笔者这里主要描述自主CPU和Intel
  • shiny教程一 -- shiny入门

    Shiny是一个R软件包 可轻松从R直接构建交互式Web应用程序 本课程将使您立即开始构建Shiny应用程序 如果还未安装Shiny软件包 打开R会话窗 确保联网状态 然后运行 install packages shiny Shiny软件包