如何根据带有闪亮元素的 R Markdown 文档中的条件禁用按钮?

Posted

技术标签:

【中文标题】如何根据带有闪亮元素的 R Markdown 文档中的条件禁用按钮?【英文标题】:How to disable button based on a condition in a R Markdown document with shiny elements? 【发布时间】:2017-09-03 16:50:58 【问题描述】:

假设我们有一组 8 个复选框(8 个字母)和一个打印所有选中复选框标签的操作按钮。我想要做什么,根据条件启用和禁用操作按钮的状态。条件是如果选中复选框的数量在 2 到 5 之间,则应启用该按钮,否则禁用该按钮。要更改按钮的状态,我想使用 shinyjs 包中的函数 enabledisabletoggleState 函数。当按钮启用时,我将能够触发一个事件来打印所选项目的数量。 这是我到目前为止所尝试的:

---
title: "Disable Button"
runtime: shiny
output: html_document
---

```r setup, include=FALSE
knitr::opts_chunk$set(echo = TRUE)
library(shinyjs)
library(shiny)
```

```r, echo=FALSE
checkboxGroupInput("param_group", label = h3("Letters"), 
    choices = LETTERS[1:8])

actionButton('action', "Print")

result<-reactive(
  length(input$param_group)
)

observe(
  if(result()>1 & result()<=5)
    enable("action")
  else
    disable("action")
)

txt<-eventReactive(input$action,
    cat("Number of letters selected: ",length(input$param_group))
)

renderPrint(
  txt()
)
```

【问题讨论】:

【参考方案1】:

我花了一段时间才找到它,但您必须启用 shinyjs 才能显式使用 R-markdown,在这种情况下它需要以不同的方式设置其 javascript

您可以通过在您使用它的块中调用:useShinyjs(rmd=T) 来做到这一点。

---
title: "Disable Button"
runtime: shiny
output: html_document
---

```r setup, include=FALSE
knitr::opts_chunk$set(echo = TRUE)
library(shinyjs)
library(shiny)
```

```r, echo=FALSE
useShinyjs(rmd=T)

checkboxGroupInput("param_group", label = h3("Letters"), 
                   choices = LETTERS[1:8])

actionButton('action', "Print")


result<-reactive(
  length(input$param_group)
)

observe(
  useShinyjs()
  if(result()>1 & result()<=5)
    enable("action")
   else 
    disable("action")
  
)

txt<-eventReactive(input$action,
  cat("Number of letters selected: ",length(input$param_group))
)

renderPrint(
  txt()
)

屏幕截图:

【讨论】:

这就是我要找的。谢谢! 是的,不幸的是,rmd=TRUE 是必需的,并且无法自动完成,因为我无法找到可靠的方法来知道它是从闪亮的应用程序还是从 Rmd 调用的,因为有一个非常它们之间的细线。我向 rstudio 询问了这个问题,他们也找不到合适的解决方案,但那是 2 年前的事了。如果您知道如何做到这一点,我愿意接受建议:)

以上是关于如何根据带有闪亮元素的 R Markdown 文档中的条件禁用按钮?的主要内容,如果未能解决你的问题,请参考以下文章

在带有 R 闪亮的 selectizeInput 中使用 html

带有 TableTools 和其他扩展的 R 闪亮数据表

如何将我的 selectInput 链接到我的 DataTable 以根据选择更新表? (这是R闪亮)

如何在闪亮的 R 应用程序中使用传单添加控制输入?

带有 r 闪亮 textInput 的 jQuery 掩码插件

R 带有单独悬停下拉选择的闪亮组按钮