【问题标题】:Shiny reactive UI not running server code闪亮的反应式 UI 未运行服务器代码
【发布时间】:2017-01-13 14:52:55
【问题描述】:

我正在尝试运行一个闪亮的反应式 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 &lt;- 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" 函数的下载按钮根本没有出现,shiny 似乎只执行 ui.R 代码。我将工作区设置为源文件的文件夹,但没有帮助。即使我从服务器取消注释 stop() 函数,似乎也没有任何改变。在 RStudio 中设置断点不会停止服务器内的代码,所以这就是我认为闪亮没有调用服务器函数的原因。但是,代码之前可以工作,我没有修改单个文件。我什至将源文件的内容复制到 server.R 代码中,但它们仍然没有加载。我有什么明显的遗漏吗?提前谢谢!

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    好吧,我又一次发现了问题所在,而且我所说的任何事情都不会让任何人发现问题所在。这是重现问题的最小可能代码:

    ui.R

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

    服务器.R

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

    我猜 R 会陷入无限循环,永远无法到达 server.R 文件。这是我应该报告的错误吗?或者只是常识会让人们远离这个麻烦。谢谢!

    【讨论】:

    • 它不是一个无限循环。 ui.r 不能对同一个输出绑定对象有多个引用。
    猜你喜欢
    • 1970-01-01
    • 2014-11-26
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 2022-10-05
    • 2016-05-23
    • 1970-01-01
    相关资源
    最近更新 更多