在Viewer中调用Shiny功能

时间:2016-05-17 16:16:09

标签: r shiny rstudio

在RStudio中,我希望在查看器中显示一个闪亮的函数hi.app。默认行为是在浏览器中打开应用程序。

hi.app <- function() {
  require(shiny)
   shinyApp(
    ui = fluidPage(
          textInput("name", "Write your name", value = "stranger"),
          verbatimTextOutput("greeting")
    ),
   server = function(input, output) {
             output$greeting <- renderPrint({
             greeting <- paste("Hi,", input$name)
             greeting
             })
   }
  )
}
hi.app()

我致电hi.app()后,将在浏览器中打开该应用。

我想要什么:定义一个参数,以便在我调用它时,始终在RStudio的Viewer中打开此特定应用程序。

我尝试了什么:在shinyApp之前添加(未成功)以下内容:
options(shiny.launch.browser = .rs.invokeShinyWindowViewer)

2 个答案:

答案 0 :(得分:0)

添加像这样的选项

hi.app <- function() {
    require(shiny)
    shinyApp(
        ui = fluidPage(
            textInput("name", "Write your name", value = "stranger"),
            verbatimTextOutput("greeting")
        ),
        server = function(input, output) {
            output$greeting <- renderPrint({
                greeting <- paste("Hi,", input$name)
                greeting
            })
        },
        options=options(shiny.launch.browser = .rs.invokeShinyWindowViewer)
    )
}
hi.app()

答案 1 :(得分:0)

更新:如果闪亮的应用程序要在本地运行,那么使用shiny gadgets代替shiny apps似乎是绝对可靠的。参数可以通过viewer中的runGadget(...)参数设置:

hi_app <- function() {
  ui = miniPage(
    gadgetTitleBar("My Gadget"),
    textInput("name", "Write your name", value = "stranger"),
    verbatimTextOutput("greeting")
  )
  server = function(input, output) {
    output$greeting <- renderPrint({
      greeting <- paste("Hi,", input$name) 
      greeting
    })
    observeEvent(input$done, {
      stopApp()
    })
  }
  runGadget(ui, server,viewer = paneViewer())
}

say_hi <- function() {
  library(shiny)
  library(miniUI)
  hi_app()
}