有人知道在运行 Shiny 的应用程序时是否能够访问 R 控制台吗? (如果可能的话,在后台运行 Shiny 的应用程序也会有所帮助)
我需要这个来操作 .GlobalEnv 中的对象,这些对象在 Shiny 的应用程序中使用,并且必须使用命令行来完成。
启动应用程序时,控制台很忙。是否可以从应用程序内部访问控制台?
提前致谢!
最佳答案
R(和 Shiny 的)以单线程运行。该线程由 Shiny 的应用程序使用,因此只要应用程序运行,您就无法与 R 交互。如果你想在 Shiny 的 session 期间运行交互式命令,你需要输入 browser()
正如 @eric-canton 所提到的,在您的应用程序中。
一个非常简单的应用程序可能如下所示
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()
根据我的经验,最后一个参数往往会意外地停止交互式终端 - 您需要一些 Shiny 的事件来触发绘图的重绘,因为
d
不是 react 值 - 如果您在控制台上,则需要为
d
分配一个新值通过使用<<-
运算符因为d
位于您正在调用的函数之外:
Browse[2]> d <<- data.frame(x = 1:200, y = 200:1)
- 您可以通过输入
c
跳出交互式控制台并恢复应用程序然后按 Enter 键
关于r - 运行 Shiny 应用程序时访问/使用 R 控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24020636/