如何根据带有闪亮元素的 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
包中的函数 enable
、disable
或 toggleState
函数。当按钮启用时,我将能够触发一个事件来打印所选项目的数量。
这是我到目前为止所尝试的:
---
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
如何将我的 selectInput 链接到我的 DataTable 以根据选择更新表? (这是R闪亮)