我们尝试使用R Shiny基于三种不同的场景进行新冠肺炎模拟。所有场景都从sliderInput获得了不同的默认值,这些默认值需要根据所选设置和(可选(用户输入传递给服务器函数。
我在UI中得到了以下选项卡SetPanel:
tabsetPanel(id = "inTabset", selected = NULL,
tabPanel("Großraumbuero",
fluidRow(
column(4, sliderInput("people",
"Personen im Raum:",
2, 15, 8)) ,
column(4, sliderInput("raum",
"Raumgröße (in m²):",
10, 35, 25)),
column(4,sliderInput("zeit",
"Aufenthaltsdauer (in Std.):",
1, 16, 8)),
)),
tabPanel("Bar",
fluidRow(
column(4, sliderInput("people2",
"Personen im Raum:",
2, 15, 15)) ,
column(4, sliderInput("raum",
"Raumgröße (in m²):",
10, 35, 23)),
column(4,sliderInput("zeit",
"Aufenthaltsdauer (in Std.):",
1, 16, 6)),
)),
tabPanel("Zug",
fluidRow(
column(4, sliderInput("people3",
"Personen im Raum:",
2, 15, 4)) ,
column(4, sliderInput("raum",
"Raumgröße (in m²):",
10, 35, 10)),
column(4,sliderInput("zeit",
"Aufenthaltsdauer (in Std.):",
1, 16, 4)),
))
并在我的R服务器中尝试此操作:
observeEvent(input$inTabset, {
if (input$inTabset == "Zug") {
num_people <- input$people3
} else if (input$inTabset == "Bar") {
num_people <- input$people2
} else if (input$inTabset == "Großraumbuero") {
num_people <- input$people
}
}
)
paste(num_people)
然而,这并不能从UI中提供受欢迎的值。我尝试了几种方法,它们都没有在用户输入或选项卡选择时将值从我的人员[2|3]输入传递给num_people变量。
事先非常感谢,希望有办法做到这一点。
您的变量num_people
仅在观察器内部可用。如果希望它在外部,可以创建一个reactiveVal
对象。试试这个
server <- function(input, output, session) {
numpeople <- reactiveVal(0)
observeEvent(input$inTabset, {
if (input$inTabset == "Zug") {
num_people <- input$people3
} else if (input$inTabset == "Bar") {
num_people <- input$people2
} else if (input$inTabset == "Großraumbuero") {
num_people <- input$people
}
numpeople(num_people)
print(num_people)
})
observe(print(numpeople()))
}