目前我正在使用radioButtons选择正在使用的值集。
radioButtons("set", "Select your set!",
list("Set 1" = "s1",
"Set 2" = "s2")
每组具有不同的值,例如“A”,“B”和“C”。
Set Var Val
1 s1 A 35
2 s1 B 45
3 s1 C 99
4 s2 A 10
5 s2 B 20
6 s2 C 77
这对我来说很好。在我的输出中,我使用
subset(dat, Set==input$set))
这是我的问题: 我想添加第三个单选按钮,使您可以通过numericInput手动设置“A”,“B”和“C”的值。 此外,各个输入字段中的初始值应该从上次使用radioButtons选择的集合中更新。
答案 0 :(得分:0)
以下是使用conditionalPanel
的解决方案。基本上,我总是从numericInput
读取所选值,但除非选择Set 3
,否则输入将被隐藏。我使用稍微不同的逻辑来映射来自输入的值(我的data.frame
映射是宽格式的,这似乎是更好的选择IMO)但除此之外,这应该适用于您的测试代码。
library(shiny)
ui <- fluidPage(
inputPanel(radioButtons(
"set", "select set", inline = TRUE,
list("Set 1" = "s1", "Set 2" = "s2", "Set 3" = "s3")
)),
conditionalPanel("input.set == 's3'", inputPanel(
numericInput("A", "B", 50, 0, 100),
numericInput("B", "B", 50, 0, 100),
numericInput("C", "C", 50, 0, 100)
)),
verbatimTextOutput("text")
)
mapping <- data.frame(
row.names = c("s1", "s2"), A = c(35, 10), B = c(45, 20), C = c(99, 77)
)
server <- function(input, output, session){
observeEvent(input$set, {
req(input$set != "s3")
for(id in c("A", "B", "C"))
updateNumericInput(session, id, value = mapping[input$set, id])
})
output$text <- renderText({paste(input$A, input$B, input$C)})
}
shinyApp(ui, server)
您也可以使用renderUI
,但conditionalPanel
是此任务的最佳选择。