闪亮的反应式UI未运行服务器代码

时间:2016-09-06 08:24:03

标签: r shiny

我正试图让一个闪亮的反应式UI运行。它变得非常复杂(就代码行而言)所以我认为重构是一个好主意。简而言之,这是我的服务器代码:

require(ggplot2)
require(h2o)

shinyServer(function(input, output, session) {
  #stop()
  localH2o <<- h2o.init(nthreads = 3) #Global variable

  source("BuilderServer.R", local = TRUE)[1]
  source("ReviewerServer.R", local = TRUE)[1]

  # CleanupFUnctions
  session$onSessionEnded(function() {
    rm(list=ls())
  }) 
})

我假设sourcelocal = TRUE就像复制粘贴R文件的内容一样。因此它们包含output$functionName <- renderUI({code})形式的函数。 ui代码依赖于这些函数,大多数都是反应性的,ui代码如下所示:

shinyUI(navbarPage("Metamodel",
  tabPanel("Build Custom Model",
    fluidRow(
      column(12,align="center",
        uiOutput("BuilderUpTitle")
      )
    ),  
    fluidRow(
      column(3,
          uiOutput("BuilderAxisSelector")
      )
    )
  )
))

在这种特殊情况下,"BuilderUpTitle"函数如下所示:

output$BuilderUpTitle <- renderUI({
  inFile <- input$BuilderInputFile
  if(is.null(input$BuilderInputFile)){
    fileInput("BuilderInputFile", "Upload a xlsx file")
  } else {
    #R Stuff done here with the file
    textInput("text", label = h3("Model Title"), value = "Enter text...")
  }
})

我昨天编写了代码并且它正在运行。今天我再次打开电脑,在启动应用程序时,甚至没有来自server.R的依赖项似乎加载(ggplot2和h2o)。 "BuilderUpTitle"功能中的下载按钮根本不显示,闪亮似乎只执行ui.R代码。我将工作区设置为源文件的文件夹,但没有帮助。即使我从服务器取消注释stop()函数,似乎没有任何改变。在RStudio中设置断点不会停止服务器内的代码,所以我认为闪亮不会调用服务器功能。但是,代码以前工作,我没有修改单个文件。我甚至将源文件的内容复制到server.R代码,但仍然没有加载。有什么明显的东西让我失踪吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

好的,再一次,我发现自己的问题是什么,我所说的一切都不会让任何人发现错误。以下是重现问题的最微小的代码:

ui.R

shinyUI(fluidPage(
  fluidRow(
    uiOutput("itWillLock"),
    uiOutput("itWillLock")
  )
))

server.R

shinyServer(function(input, output) {
  output$itWillLock <- renderUI({
    sliderInput("slider","Slider",min=0,max=1,value=0)
  })
})

我猜R卡在无限循环中,永远不会到达server.R文件。这是我应该报告的错误吗?或者只是常识会让人们摆脱这种麻烦。谢谢!