簡體   English   中英

運行閃亮的應用程序時訪問/使用 R 控制台

[英]Access/use R console when running a shiny app

有人知道在運行閃亮的應用程序時是否可以訪問 R 控制台嗎? (如果可能的話,在后台運行閃亮的應用程序也會有所幫助)

我需要這個來操作 .GlobalEnv 中的對象,這些對象在閃亮的應用程序中使用,這必須使用命令行來完成。

啟動應用程序時,控制台嗡嗡作響。 是否可以從應用程序內部訪問控制台?

提前致謝!

R(和閃亮的)運行單線程。 該線程由閃亮的應用程序使用,因此您無法在應用程序運行時與 R 交互。 如果您想在閃亮的會話期間運行交互式命令,您需要像@eric-canton 提到的那樣在您的應用程序中放置一個browser()

一個非常簡單的應用程序可能如下所示

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)

關於代碼的一些評論

  • 我將1 + 1放在browser()命令之后,因為根據我的經驗,將browser()設置為最后一個參數往往會意外停止交互式終端
  • 您需要一些閃亮的事件來觸發繪圖的重繪,因為d不是反應值
  • 如果您在控制台上,則需要使用<<-運算符為d分配一個新值,因為d位於您正在調用的函數之外:
Browse[2]> d <<- data.frame(x = 1:200, y = 200:1)
  • 您可以通過輸入c並按 Enter 跳出交互式控制台並恢復應用程序

嗯,我也有類似的疑惑! 就我而言,解決方案是創建我自己的 Shiny 服務器: https : //github.com/rstudio/shiny-server

一方面,當我想更改或測試新元素時,我在 RStudio IDE 中有我的應用程序。 確實這是測試版。 要運行應用程序,每次端口更改時都執行 runApp(dir)。

另一方面,我在 Shiny 服務器中有穩定版本。 這是一種有用的方法,可以在您進行一些更改時從不同設備進行連接並擁有可操作的版本。 應用程序一直在運行,你必須在這個文件中配置你的端口:/etc/shiny-server/shiny-server.conf。

如果您需要有關 Shiny 服務器的更多信息,請訪問此網站: https : //rstudio.github.io/shiny-server/latest/#configuration-settings

不能使用<<-全局賦值運算符嗎? 我不確定您需要設置的變量有多復雜,但假設您只需要將某個變量t更改為 5。

我們可以創建一個textBoxInput來改變input$new_t變量。 然后有一個觀察者:

observeEvent(input$new_t, t <<- input$new_t)

然后,當input$new_t改變時,全局變量t改變。

編輯:另一種選擇是在訪問您需要更改的變量的對象中放置一個browser() ,就在該變量被訪問之前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM