有没有办法在 Shiny 中添加一个带有警告或其他消息的弹出(一个可关闭的窗口) - 我用来构建我的Web应用程序的R包?
我一直在搜索,但没有任何结果。
答案 0 :(得分:21)
虽然我认为shiny
中没有本地可用的内容,但您可以尝试将jQueryUI
添加到您的应用程序并使用Dialog小部件。请参阅http://jqueryui.com/dialog/。
(Un?)幸运的是,您将被迫编写一些JavaScript以使其正常工作。
Per @ 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.R
和ui.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。
并且,免责声明:此处的控制台仅用于演示目的;请不要将任何从用户那里运行未经过处理的代码的闪亮应用程序放到野外!
答案 1 :(得分:13)
有一个新的R包 - shinyBS带来许多twitter引导功能,如警报,工具提示,弹出窗口,模态对话框,进度条等......
答案 2 :(得分:0)
Bolaka是正确的,安装并加载shinyBS
包,然后运行bsExample("Alerts")
以查看包含您可以复制和粘贴的代码的示例。