【问题标题】:Calling Shiny function in Viewer在查看器中调用 Shiny 函数
【发布时间】:2016-05-17 16:16:09
【问题描述】:

在 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 的查看器中打开。

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

【问题讨论】:

    标签: r shiny rstudio


    【解决方案1】:

    添加这样的选项

    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()
    

    【讨论】:

    • 感谢您的建议,但它仍会启动浏览器。它可能是特定于操作系统的吗?我正在运行 Windows 8、RStudio 0.99.491 和闪亮的 0.13.1
    • 它适用于我在 Windows 7、RStudio 0.99.902 和 Shiny 0.13.2 下。尝试重新启动您的 R 会话。
    • 重启了还是不行。我想知道在我的情况下是否没有更深层次的配置问题。
    【解决方案2】:

    更新:如果闪亮的应用程序要在本地运行,则使用 shiny gadgets 而不是 shiny apps 似乎是万无一失的。参数 con 可以通过 runGadget(...) 中的 viewer 参数设置:

    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()
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多