R 闪亮-将NULL返回到plotOutput时出现黑色框

R 闪亮-将NULL返回到plotOutput时出现黑色框,r,shiny,R,Shiny,在下面的示例中,我得到了一个黑色的填充框,当我第一次运行源代码时,该框中的绘图应该是空的,而不是空的 我什么也没说,因为在单击按钮之前,表不会(正确地)显示。我预计绘图也会有同样的行为,即在单击按钮之前,屏幕上显示的都是按钮。我做错了什么 library(shiny) myUI = bootstrapPage( actionButton(inputId="gobutton", label="Go"), plotOutput("plot"), tableOutput("table"

在下面的示例中,我得到了一个黑色的填充框,当我第一次运行源代码时,该框中的绘图应该是空的,而不是空的

我什么也没说,因为在单击按钮之前,表不会(正确地)显示。我预计绘图也会有同样的行为,即在单击按钮之前,屏幕上显示的都是按钮。我做错了什么

library(shiny)

myUI = bootstrapPage( 
  actionButton(inputId="gobutton", label="Go"),
  plotOutput("plot"),
  tableOutput("table")
  )

mySERVER = function(input, output) {
  output$plot <- renderPlot({ 
    if(input$gobutton==0) {return(NULL)}
    hist(runif(100))
  })
  output$table <- renderTable({ 
    if(input$gobutton==0) {return(NULL)}
    data.frame(x=runif(10), y=seq(1:10))
  })

}

runApp(list(
  ui = myUI,
  server = mySERVER
  ))

我认为这与开罗一揽子计划有关

我的系统没有安装Cairo。如果我在Firefox中使用新的R会话运行您的代码,则不会出现黑框(只有GO按钮)

然后我安装并加载Cairo。当我重新运行你的代码时,我得到了黑盒

然后我卸载Cairo
detach(“package:Cairo”,unload=T)
:仍然得到黑盒

然后我重新启动R并运行您的代码:仍然是黑盒

然后我安装Cairo
remove.packages(“Cairo”)
并重新启动R:no黑盒


因此,如果安装的话,Shiny会加载Cairo,这就是黑匣子的原因。

FWIW当我在新的R会话中使用Firefox运行代码时,它对我有效(最初没有黑匣子,只有GO按钮)。我的
sessionInfo()
与您的相同,只是:
Platform:x86_64-w64-mingw32/x64(64位)
并且我没有加载Cairo。也许我的Cairo出现了一些奇怪的情况,因为我无法准确地重现您的步骤
detach
引发错误,但
unloadNamespace
未卸载。我还是像你一样拿到了黑匣子。更有趣的是,也许有一个线索是,在卸载Cairo之后,我没有收到任何黑框,而是收到pngfun中的错误消息
警告(filename=filename,width=width,height=height,res=res,:在.External2(C_X11,paste(“png:”,filename,sep=“”)中没有png支持,g$width,:无法启动设备PNG
Can
plotOutput()
使用不同的设备?该错误消息导致我在很长一段时间内无所事事,因此我安装了所有可以使用的libpng、libtiff、libjpg+dev软件包。现在可以确认您的结果了-卸载Cairo将删除邪恶的黑框。我可能真的想要或需要Cairo软件包的原因是什么?抱歉,我不知道哦。我已经很久没有使用它了-直到我在您的
sessionnInfo()
中看到它之前,我从来没有听说过它。有一种更简单的方法可以在不卸载它的情况下禁用Cairo。在服务器代码中使用
选项(shinny.usecao=FALSE)
> sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_GB.utf8       LC_NUMERIC=C             
 [3] LC_TIME=en_GB.utf8        LC_COLLATE=en_GB.utf8    
 [5] LC_MONETARY=en_GB.utf8    LC_MESSAGES=en_GB.utf8   
 [7] LC_PAPER=en_GB.utf8       LC_NAME=C                
 [9] LC_ADDRESS=C              LC_TELEPHONE=C           
[11] LC_MEASUREMENT=en_GB.utf8 LC_IDENTIFICATION=C      

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] shiny_0.8.0

loaded via a namespace (and not attached):
[1] bitops_1.0-6  Cairo_1.5-5   caTools_1.16  digest_0.6.4  httpuv_1.2.2 
[6] Rcpp_0.11.0   RJSONIO_1.0-3 tools_3.0.2   xtable_1.7-1