【问题标题】:Evaluating beyond input conditions in R Shiny conditionalPanel在 R Shiny conditionalPanel 中评估超出输入条件
【发布时间】:2018-03-09 04:50:36
【问题描述】:

我正在构建一个 R Shiny 仪表板,并尝试实现条件面板。当然,我是 JavaScript 新手。 SO上有很多关于conditionalPanels的帖子,但我看到的每一个都在其条件表达式中使用input.something,通常是这样的:

conditionalPanel(
    condition = "input.tabs == 'correlation'",

    actionButton("generate_correlation", "Generate Heat Map")
  )

我知道条件语句中的表达式是一个作为 JavaScript 表达式求值的字符串,但我想知道是否可以访问 input 之外的其他变量和对象?例如,它可以评估反应函数吗?我想按下一个按钮,然后有条件地出现一个新选项卡。我已经创建了

         tabPanel("Tab 1",
                  actionButton("dropColumnsComplete", "Next"))

然后,我在服务器端创建了一个反应式表达式来处理这个问题:

  dropColumnsComplete <- reactive(input$dropColumnsComplete,{
    return(TRUE)
  })

单击按钮会触发input$dropColumnsComplete 事件,该事件应调用在调用函数dropColumnsComplete() 时返回TRUE 的反应式表达式。然后,我添加

     conditionalPanel(condition = "dropColumnsComplete()",
                      tabPanel("Tab 2")
                      ),

我希望按下按钮会导致 Tab 2 出现。我知道我没有正确访问条件表达式中的dropColumnsComplete() - 它应该是document.dropColumnsComplete() 吗? shiny.dropColumnsComplete()?这方面的文档令人惊讶地缺乏,所以我不知道如何在 JavaScript 中访问 input$... 之外的变量。

【问题讨论】:

标签: javascript r shiny


【解决方案1】:

没有理由编写响应式来有条件地显示/隐藏元素。看看shinyjs,而不是Dean Attali

shinyjs使用示例:

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  actionButton("show", "Click me once to show stuff!"),
  actionButton("toggle", "Click me any times to toggle stuff!"),
  hidden(
    div(id = "d1",
      "Content hidden until button is clicked"
    )
  ),
  hidden(
    div(id = "d2",
        "Content toggled when button is clicked"
    )
  )
)

server <- function(input, output) {
  observeEvent(input$show, {
    show("d1")
  })

  observeEvent(input$toggle, {
    toggle("d2")
  })
}
shinyApp(ui, server)

【讨论】:

  • 谢谢,但是这将如何与 R 中的 tabPanels 一起工作?由于没有元素 id,我可以像 div 一样引用您的情况。
  • 其实我刚刚发现了这个很棒的资源:@​​987654322@。
猜你喜欢
  • 2019-09-20
  • 2014-04-13
  • 1970-01-01
  • 2017-06-02
  • 2020-03-20
  • 2016-02-03
  • 2021-11-15
  • 1970-01-01
  • 2019-05-15
相关资源
最近更新 更多