gpt4 book ai didi

R Shiny conditionalPanel 在不满足条件时显示

转载 作者:行者123 更新时间:2023-12-04 11:27:25 27 4
gpt4 key购买 nike

这基本上是这个问题的详细示例的后续行动(没有答案):
conditionalPanel in shiny (doesn't seem to work)

示例应用程序:根据用户选择显示面板(“list1”、“list2”等)。 “list3”未被选中,应该不是 展示。

ui.R

displayList <- c("list1", "list2", "list3")

shinyUI(pageWithSidebar(
headerPanel("Shiny Display List"),

sidebarPanel(
checkboxGroupInput('dlist', 'Display List:', displayList, selected = displayList[1:2])
),

mainPanel(
h4("Display List"),

conditionalPanel(condition = "length(intersect(input.dlist, displayList[1])) > 0",
p("Some List 1 entries")
),

conditionalPanel(condition = "length(intersect(input.dlist, displayList[2])) > 0",
p("Some List 2 entries")
),

conditionalPanel(condition = "length(intersect(input.dlist, displayList[3])) > 0",
p("Some List 3 entries") #WASN'T SELECTED, SHOULD NOT DISPLAY INITIALLY
)
)
))

server.R
shinyServer(function(input, output) {
observe({cat(input$dlist, "\n")})
observe({cat(length(intersect(input$dlist, "list3")))})
})

为了测试是否满足条件,我运行了 observe在 server.R 中,输出显示条件确实是 不是 遇到小组 3(下面的“0”)。
list1 list2 
0

但是,该应用程序仍显示“list3”

enter image description here

知道为什么吗?我确实尝试了不同形式的条件(而不是使用 intersect 等),但没有成功。

编辑答案

正如@nstjhp 和@Julien Navarre 所指出的, conditionalPanel “条件”需要在 Javascript 中。对于上面的例子,它的工作原理如下:
conditionalPanel(condition = "input.dlist.indexOf('list1') > -1",
p("Some List 1 entries")
)

最佳答案

正如@nstjhp 所说,条件必须在 Javascript 中进入条件面板,您不能在此处插入 R 逻辑。

如果你想用 R 语法控制输入,你可以使用 renderUI :

例如 :

output$panel = renderUI({
if(input$dlist[1] == TRUE) {
display something
} else if
.....

尽管在您的情况下,javascript 中的条件并没有太大不同。就像这样: condition = "input.dlist[0]" .请注意,在 javascript 中索引从 0 开始,而不是像 R 中那样从 1 开始。

您的主面板:
mainPanel(
h4("Display List"),

conditionalPanel(condition = "input.dlist[0]",
p("Some List 1 entries")
),

conditionalPanel(condition = "input.dlist[1]",
p("Some List 2 entries")
),

conditionalPanel(condition = "input.dlist[2]",
p("Some List 3 entries")
)
)

关于R Shiny conditionalPanel 在不满足条件时显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22305383/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com