Access/use R console when running a shiny app

后端 未结 3 641
我寻月下人不归
我寻月下人不归 2021-02-19 04:06

Does anybody know if one is able to access the R console when running a shiny app? (running the shiny application in background would also be helpful, if that\'s possible)

3条回答
  •  礼貌的吻别
    2021-02-19 04:46

    R (and shiny) run single-threaded. This thread is used by the shiny application so you cannot interact with R whenever the app is running. If you want to run interactive commands during a shiny session you need to put a browser() inside your application like mentioned by @eric-canton.

    A very simple application could look like this

    library(shiny)
    
    d <- data.frame(1:10, 1:10)
    
    ui <-  fluidPage(
      actionButton("browser", "Trigger browser()"),
      actionButton("reload", "Reload Plot"),
      plotOutput("plot")
    )
    
    
    server <- function(input, output, session) {
      observeEvent(input$browser, {
        browser()
        1 + 1
      })
    
      output$plot <- renderPlot({
        input$reload
        plot(d)
      })
    }
    
    shinyApp(server = server, ui = ui)
    

    Some comments about the code

    • I put 1 + 1 after the browser() command because setting browser() as the last argument tends to stop the interactive terminal unexpectedly in my experience
    • You need some shiny event to trigger the redrawing of the plot, because d is not a reactive value
    • If you are on the console you need to assign a new value to d by using the <<- operator because d lives outside the function you are calling:
    Browse[2]> d <<- data.frame(x = 1:200, y = 200:1)
    
    • You can jump out of interactive console and resume the app by entering c and hitting Enter

提交回复
热议问题