javascript - 根据复选框输入更改闪亮的条件面板
问题描述
我想要的是
我正在构建一个具有多个 generic 的闪亮应用程序conditionalPanels
,每个应用程序的显示取决于来自一个主要复选框的输入。在之前的问题中,我只找到了具有单一条件的条件面板。
假设主要复选框可以输出 1 到 5 之间的任何值,允许多选。
复选框值“1”的单个条件是:
conditionalPanel(condition='input.in_test==1'...
问题
现在,我想将其与复选框的多项选择选项相匹配。我需要的是%in%
与正确的数据类型相结合的 R 运算符的 javascript 等效项。我找到了contains()
不起作用的方法,因为我可能弄错了数据类型,因为它可能不等于 R 的向量类型。这是复选框值 1 和 2 的内容:
conditionalPanel(condition='if(Arrays.asList(input.in_test).contains(1,2))'
那么,将 R 的%in%
运算符转换为这段动态的 Java 代码以使其在conditionalPanel
. 谢谢您的帮助!
例子
这是我正在尝试做的一个最小的工作示例,只有一个条件:
sapply(c("tidyverse","shiny","DT"),require,character.only=T)
# helper function for choices
shiny_choices <- function(vector){
tibble(names=vector) %>%
mutate(val=1:nrow(.)) %>%
deframe()
}
# shiny ui
ui <- fluidPage(
title="This is a test",
titlePanel(strong("Test")),
sidebarLayout(
position="left",
# Funktions-Panel
sidebarPanel(
# main checkbox
fluidRow(
checkboxGroupInput("in_check_all","Selection",choices=shiny_choices(colnames(iris)),selected=NULL)
),
# generic input checkboxes
lapply(colnames(iris),function(y){
temp <- shiny_choices(colnames(iris))
#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
conditionalPanel(condition=paste0("input.in_check_all==",temp[y]), # this is the critical line that needs to be adapted
#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
fluidRow(
checkboxGroupInput(paste0("in_check_",temp[y]),
y,
choices=sort(unique(iris %>% select(y))[[1]]),
selected=NULL)
)
)
}),
),
mainPanel(
DT::dataTableOutput("out_table")
)
)
)
# shiny server
server <- function(input,output,session){
output$out_table <- DT::renderDataTable({
# filter data dependent on input
x <- iris # %>% ...
DT::datatable(x)
})
}
# app
shinyApp(ui=ui,server=server)
解决方案
您正在寻找的是 javascript's (not Java) includes()
。传递的值是字符串,所以我们还必须引用它们:
condition=paste0("input.in_check_all.includes(\"",temp[y],"\")"),
推荐阅读
- python-3.x - 如何使用 root 的 UID/GID 创建一个 tarball?
- java - 版本控制静态资产不适用于 Spring Web Flow
- arrays - 如何在谷歌表格中获得减法/减法函数的差异
- teamcity - Teamcity:版本化设置、构建模板和不同的 VCS 根
- unity3d - 在构建中无法访问 Unity OpenGL 纹理
- java - Spring Boot 应用程序在本地作为 JAR 文件运行良好,但是当我使用 WinSW 将其作为 Windows 服务运行时出现错误
- python-2.7 - 如何使用 boto3 将标签添加到 Cloudwatch 日志组?
- python - Python:使用 subprocess 不断地 ls
- python - 我是否可以使用具有相同列表文本的字符串整数调用列表
- botframework - 如何在 Skype for business 中添加提示?