我正在尝试使用conditionalPanel在加载文件时显示消息。但是,一旦条件为TRUE,面板就不会消失。我在下面创建了可复制的代码:

服务器

library(shiny)

print("Loading start")
print(paste("1->",exists('FGram')))
FGram <- readRDS("data/UGram.rds")
print(paste("2->",exists('FGram')))
print("Loading end")

shinyServer( function(input, output, session) {

})

用户界面
library(shiny)

shinyUI( fluidPage(
  sidebarLayout(
    sidebarPanel(
      h4("Side Panel")
      )
    ),

    mainPanel(
      h4("Main Panel"),
      br(),
      textOutput("First Line of text.."),
      br(),
      conditionalPanel(condition = "exists('FGram')", HTML("PLEASE WAIT!!     <br>App is loading, may take a while....")),
      br(),
      h4("Last Line of text..")
    )
  )
)

最佳答案

提供给conditionalPanel的条件是在javascript环境中而非R环境中执行的,因此无法在R环境中引用或检查变量或函数。解决此问题的方法是使用uiOutput,如下面的示例所示。

myGlobalVar <- 1

server <- function(input, output) {

    output$condPanel <- renderUI({
        if (exists('myGlobalVar'))
            HTML("PLEASE WAIT!!     <br>App is loading, may take a while....")
    })

}

ui <- fluidPage({
    uiOutput('condPanel')
})


shinyApp(ui=ui, server=server)

关于r - 在Shiny中的conditionalPanel无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34658490/

10-12 17:30