运行闪亮的应用程序时访问/使用R控制台

时间:2014-06-03 16:46:39

标签: r console shiny

有人知道在运行闪亮的应用程序时是否能够访问R控制台吗? (如果可能的话,在后台运行闪亮的应用程序也会有所帮助)

我需要这个来操作.GlobalEnv中的对象,这些对象在闪亮的应用程序中使用,这必须使用命令行完成。

启动应用程序时,控制台很快。是否有可能从应用程序中访问控制台?

提前致谢!

3 个答案:

答案 0 :(得分:1)

R(且发亮)运行单线程。闪亮的应用程序使用此线程,因此无论何时运行该应用程序,您都无法与R进行交互。如果要在闪亮的会话中运行交互式命令,则需要在应用程序中放入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()设置为最后一个参数会导致交互式终端意外终止
  • 您需要一些闪亮的事件来触发绘图的重新绘制,因为d不是反应性值
  • 如果您在控制台上,则需要使用d运算符为<<-分配一个新值,因为d不在您调用的函数之内:
Browse[2]> d <<- data.frame(x = 1:200, y = 200:1)
  • 您可以退出交互式控制台并通过输入c并按Enter键来恢复应用程序

答案 1 :(得分:0)

嗯,我有类似的疑问!就我而言,解决方案是创建我自己的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

答案 2 :(得分:0)

您不能使用<<-全局赋值运算符吗?我不确定您需要设置的变量有多复杂,但是说您只需要将一些变量t更改为5。

我们可以制作一个textBoxInput来更改input$new_t变量。然后有一个观察者:

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

然后,当input$new_t更改时,全局变量t更改。

编辑:另一种选择是在访问变量之前将browser()放置在访问需要更改的变量的对象中。