如何解决有没有办法根据 R Shiny 中选定的 tabPanel 更新 tabsetPanel 中的 sliderInput 的输入?
我们尝试使用 R Shiny 进行基于三种不同场景的 Covid-19 模拟。 所有场景都从滑块输入获得不同的默认值,需要根据所选设置和(附加)用户输入将其传递给服务器功能。
我的 UI 中有以下 tabSetPanel:
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)),sliderInput("zeit","Aufenthaltsdauer (in Std.):",1,16,)),tabPanel("Bar",sliderInput("people2",15)),23)),6)),tabPanel("Zug",sliderInput("people3",4)),10)),))
并在我的 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)
然而,这并没有提供用户界面所追求的价值。我尝试了几种方法,但都没有将值从我的 people[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()))
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。