在包中嵌入HTML UI Shiny应用程序

时间:2013-11-19 17:30:14

标签: r shiny

我正在尝试在我正在制作的包中加入一个闪亮的实现。我在shiny::runApp()中看到您可以将UI和服务器指定为列表而不是目录位置:

runApp(list(
  ui = bootstrapPage(
    numericInput('n', 'Number of obs', 100),
    plotOutput('plot')
  ),
  server = function(input, output) {
    output$plot <- renderPlot({ hist(runif(input$n)) })
  }
))

使用自定义HTML UI时如何执行此操作?相关文件应放在包的目录中的哪个位置?闪亮应用程序的布局看起来像这样:

server.R
www/
    style.css
    scripts.js

我认为解决方案可能涉及includeHTML()includeCSS()等,但我无法弄清楚文档的内容。

3 个答案:

答案 0 :(得分:17)

您的包层次结构应如下所示:

R
  launcher.R
man 
inst
   myshinyapp
        server.R
        www
           index.html      ## here your ui interface
           shared
                 js
                    yourscript.js
                 css
                    style.css
launcher.R中的

应添加此功能:

runUI <- function ()
    shiny::runApp(
        system.file('myshinyapp',                                                    
         package='my_package_name')) ## your package name here

您应该在NAMESPACE中导出/导入:

export(runUI)
import(shiny)

并在DESCRIPTION中导入部分:

Imports:shiny

答案 1 :(得分:2)

好吧,你可以通过将所有HTML放在HTML()函数中来实现这一点。确保你为Shiny传递有效的HTML然后你应该没事!

runApp(list(
  ui = bootstrapPage(
    HTML("<h1>Hello World</h1>")
  ),
  server = function(input, output) {
    output$plot <- renderPlot({ hist(runif(input$n)) })
  }
))

答案 2 :(得分:1)

将包含HTML的index.html放入www文件夹中。现在删除 ui.R(如果存在)。现在只需

runApp(yourFolder)

其中yourFolder应该是服务器的路径.R。如果你的index.html设置正确,那么应该运行Shiny App。