r - 添加带有错误的弹出窗口,警告 Shiny

标签 r shiny

有没有办法在 Shiny(我用来构建 Web 应用程序的 R 包)中添加带有警告或其他消息的弹出窗口(可关闭的窗口)?

我已经寻找了一段时间,但没有任何结果。

最佳答案

尽管我认为 shiny 中没有任何 native 可用的内容,但您可以尝试将 jQueryUI 添加到您的应用程序并使用 Dialog 小部件。请参阅http://jqueryui.com/dialog/ .

(Un?)幸运的是,您将被迫编写一些 JavaScript 来使其工作。

<小时/>

根据 @GSee 的建议,这里有一个非常简单的示例,说明如何使其发挥作用。

您需要下载jQueryUI并建立一个 Shiny 的项目,其结构如下:

.
├── server.R
├── ui.R
└── www
    ├── css
    │   └── jquery-ui.css
    ├── images
    │   ├── animated-overlay.gif
    │   ├── ui-bg_flat_0_aaaaaa_40x100.png
    │   ├── ui-bg_flat_75_ffffff_40x100.png
    │   ├── ui-bg_glass_55_fbf9ee_1x400.png
    │   ├── ui-bg_glass_65_ffffff_1x400.png
    │   ├── ui-bg_glass_75_dadada_1x400.png
    │   ├── ui-bg_glass_75_e6e6e6_1x400.png
    │   ├── ui-bg_glass_95_fef1ec_1x400.png
    │   ├── ui-bg_highlight-soft_75_cccccc_1x100.png
    │   ├── ui-icons_222222_256x240.png
    │   ├── ui-icons_2e83ff_256x240.png
    │   ├── ui-icons_454545_256x240.png
    │   ├── ui-icons_888888_256x240.png
    │   └── ui-icons_cd0a0a_256x240.png
    └── js
        └── jquery-ui.js

(所有图像图标都是 jQueryUI 的一部分)

接下来,将一个名为 scripts.js(或任何您喜欢的文件)的文件添加到 www/js 文件夹,其中包含以下内容

$( function() {
  $("#dialog").dialog();
})

这会在 id 为 dialog 的元素上调用 jQueryUI dialog 初始值设定项。

接下来,有一个 server.Rui.R 如下:

server.R
--------
library(shiny)
shinyServer( function(input, output, session) {

  ## a very unsafe, basic access to the R console
  output$dialog <- renderPrint({

    code <- input$console
    output <- eval( parse( text=code ) )
    return(output)

  })

})

ui.R
----

library(shiny)

shinyUI(bootstrapPage(
  includeCSS("www/css/jquery-ui.css"),  

  includeScript("www/js/jquery-ui.js"),
  includeScript("www/js/scripts.js"),

  textInput("console", "Enter an R Command"),
  uiOutput("dialog")

))

现在,如果您执行runApp(),您应该会看到您写入文本输入console的任何代码的评估结果出现在对话框中 框。

现在的问题是,我们如何才能最小化它,或者仅在产生错误代码时才显示它?我必须离开去找你,因为我觉得这会很棘手。一些选项:

  1. 弄清楚如何让我们的 R 代码发送或触发一些 JavaScript 来显示或隐藏元素。使用此功能暂时禁用按钮的示例(不是我的)是 here .

  2. 将(JavaScript)观察器或触发器附加到生成的输出,如果您看到错误(或输出以某种方式符合要求),则显示该框;否则隐藏它。

  3. 生成一个实际的 Shiny 输入/输出对来根据需要处理行为。 (简短教程位于http://rstudio.github.io/shiny/tutorial/#building-inputs)

如果您想更多地利用 jQueryUI 对话框,您还可以尝试扩展 jQuery-dialogextend here .

并且,免责声明:此处的控制台仅用于演示目的;请不要将任何运行用户未经净化的代码的 Shiny 应用程序投入使用!

关于r - 添加带有错误的弹出窗口,警告 Shiny ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19172904/

相关文章:

r - geom_bar 根据值使用 geom_point 颜色对数据进行分组

r - 简化代码以根据另一个变量的分箱更有效地获取两个变量的平均值

r - 如何防止 x 标签与条形图中的条形重叠?

css - Shiny Dashboadpage 锁定 dashboardHeader 在顶部

r - Shinydashboard 可以使用 Tabpanels 并具有导航栏吗?

r - R 的推荐实验室如何计算 ratingMatrix 中每个项目的评分?

r - Magrittr 函数 - 如何打包它们?

r - nchar 在 Shiny 应用程序中计算两次特殊字符

R Shiny : Click Button Within Datatable to Display Popup Twice in a row

javascript - 在 R Sortable 中为可排序对象文本添加索引