R在闪亮的应用程序后停止脚本而不会出现错误

时间:2016-10-19 21:59:57

标签: r windows shiny osx-yosemite

这是我第一次在这里发帖提问,如果我过于模糊或不清楚,请原谅我。我在R中运行一个以闪亮的应用程序开头的脚本,当使用Windows时,这个脚本运行完美。但是,在Mac上,脚本似乎在闪亮的应用程序之后捕获某些命令。这是我的脚本的最小例子。我包括了完整的闪亮应用程序,以防它相关。

library(shiny)
master_metatable=read.csv('metadata.csv')

#begin shiny app
select_tables=runApp(list(
  ui=fluidPage(
    titlePanel("Data Repository v0.01"),
    fluidRow(
      column(3,
             checkboxGroupInput("phase_selection",
                     label = "Choose Phase",
                     choices = c("Phase I","Phase II","Phase III"),
                     selected = "Phase I")),

      column(3,
             uiOutput("ui")),

      column(3,
             actionButton("done","Done"))

    )
  ),
  server=function(input,output){
    output$ui=renderUI({
      tables=unique(master_metatable$measure[which(master_metatable$cohort==input$phase_selection)])
      checkboxGroupInput("table_selection",
                     label = "Tables",
                     tables)
    })

    output$text1=renderText({
     paste0("You have selected ",input$table_selection)
    })


    observeEvent(input$done, stopApp(list(input$phase_selection,
                                                 input$table_selection)))
  }

))
#end shiny app


#test print 1
print("test1")

testcsv=read.csv('metadata.cv')

#test print 2
print("test2")


library(tcltk)
filepath=tk_choose.dir()

...等

例如,当我在Mac上运行此脚本时,它会完成闪亮的应用程序,打印'test1',然后开始在testcsv中读取但停止。它不会产生错误或警告信息,甚至不会给出“+”表示我遗漏了')'或其他东西。它只是停止,不会在表中读取,并且永远不会继续使用脚本的其余部分。它也没有被冻结,它就像它到达脚本末尾一样。请注意,这与我在脚本顶部导入的csv相同,因此我的语法或csv文件没有任何问题。但是,如果我只是首先运行脚本的闪亮应用程序部分,然后运行脚本的其余部分,一切都完美无瑕!换句话说,如果我一次运行整个脚本,它会捕获,但是如果我只是突出显示闪亮的应用程序并运行它,然后突出显示其他所有内容并运行它,它就可以了。同样,这种异常只发生在Mac上(我试过两台Mac都运行Yosemite),并且该脚本在Windows上运行完美(64位和32位)。

此外,在我的Mac上运行整个脚本时,它会成功运行应用程序并在csv中读取,但稍后会在脚本中捕获其他内容。它似乎只能捕获与环境相关的命令(即read.csv,read.table,tk_choose.dir)。它对基本处理命令永远不会有任何问题。一旦它甚至没有问题就完成了整个脚本,但是下次我运行它时,它再次陷入了read.csv。

我也不认为这个问题与我的机器的处理限制有关,因为我在计算机上运行了更加苛刻的脚本而没有问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我终于在GitHub forum找到了答案。它与RStudio中的查看器窗格有关。要在Mac上使用,我在我的脚本的开头添加了'options(shiny.launch.browser = TRUE)',因此它将我的计算机的默认Web浏览器用作查看器窗格而不是R。