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

我一直在寻找一段时间,但没有任何结果。

最佳答案

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

不幸的是,您将不得不编写一些JavaScript使其能够正常工作。



根据@GSee的建议,这是使其工作所需的最小限度的示例。

您需要下载jQueryUI并使用如下结构设置一个闪亮的项目:

.
├── 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为jQueryUI的元素上调用dialog 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框中看到对写入文本输入dialog中的任何代码进行评估的结果。

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


弄清楚如何使我们的R代码发送或触发一些JavaScript来显示或隐藏该元素。使用此示例来暂时禁用按钮的示例(不是我的示例)是here
将(JavaScript)观察者或触发器附加到产生的输出上,如果您看到错误(或以其他方式符合要求的输出),请显示该框;否则将其隐藏。
生成实际的Shiny输入/输出对,以根据需要处理行为。 (位于http://rstudio.github.io/shiny/tutorial/#building-inputs的简要教程)


如果您想从jQueryUI对话框中获得更多收益,还可以尝试扩展jQuery-dialogextend here

免责声明:此处的控制台仅用于演示目的;请不要将任何运行未经用户验证的代码的闪亮应用程序大肆宣传!

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

10-12 17:23