2 个输入选择器值的平均值未针对第二个选择器输入更新,Shiny
Average of 2 input selector values not updating for the second picker input, Shiny
我有两个选择器输入选择器,每个都有 4 个标签(低、中、大、非常大)附加到一个值 (1,2,3,4)。
用户做出 his/her 选择后,我想显示总体平均值。
出于某种原因,我的代码计算平均输入没有问题,但它根本不考虑第二个选择器。我是不是漏掉了一个括号?
理想情况下,我想为平均值显示相应的标签名称,但这是次要的。
这是一个可重现的例子。非常感谢!
'''
if (interactive()) {
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
pickerInput(
inputId = "groups_2",
label = "Select two from each group below:",
choices = c("Low" = "1", "Medium" = "2","Large" = "3", "Very Large" = "4"),
multiple = TRUE,
options = list("max-options-group" = 2)
),
verbatimTextOutput(outputId = "res_grp_2"),
pickerInput(
inputId = "classic",
label = "Select max two option below:",
choices = c("Low" = "1", "Medium" = "2","Large" = "3", "Very Large" = "4"),
multiple = TRUE,
options = list(
"max-options" = 2,
"max-options-text" = "No more!"
)
),
verbatimTextOutput(outputId = "res_classic"),
textOutput(outputId = "avg")
)
server <- function(input, output) {
output$res_grp_2 <- renderPrint(input$groups_2)
output$res_classic <- renderPrint(input$classic)
avg<-reactive(mean(as.numeric(input$groups_2, input$classic)))
output$avg<-renderText(avg())
}
shinyApp(ui, server)
}
'''
由于您可以在每个 pickerInput
中选择不同数量的元素,因此最好计算您自己的平均值。一种方法如下所示。
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
pickerInput(
inputId = "groups_2",
label = "Select two from each group below:",
choices = c("Low" = "1", "Medium" = "2","Large" = "3", "Very Large" = "4"),
multiple = TRUE,
options = list("max-options" = 2)
),
verbatimTextOutput(outputId = "res_grp_2"),
pickerInput(
inputId = "classic",
label = "Select max two option below:",
choices = c("Low" = "1", "Medium" = "2","Large" = "3", "Very Large" = "4"),
multiple = TRUE,
options = list(
"max-options" = 2,
"max-options-text" = "No more!"
)
),
verbatimTextOutput(outputId = "res_classic"),
textOutput(outputId = "avg")
)
server <- function(input, output) {
output$res_grp_2 <- renderPrint(input$groups_2)
output$res_classic <- renderPrint(input$classic)
avg <- reactive({
req(input$classic,input$groups_2)
numr <- sum(sum(as.numeric(input$groups_2)), sum(as.numeric(input$classic)))
denom <- sum(length(input$groups_2),length(input$classic))
avg <- numr/denom
})
output$avg<-renderText(avg())
}
shinyApp(ui, server)
我有两个选择器输入选择器,每个都有 4 个标签(低、中、大、非常大)附加到一个值 (1,2,3,4)。 用户做出 his/her 选择后,我想显示总体平均值。 出于某种原因,我的代码计算平均输入没有问题,但它根本不考虑第二个选择器。我是不是漏掉了一个括号?
理想情况下,我想为平均值显示相应的标签名称,但这是次要的。 这是一个可重现的例子。非常感谢!
'''
if (interactive()) {
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
pickerInput(
inputId = "groups_2",
label = "Select two from each group below:",
choices = c("Low" = "1", "Medium" = "2","Large" = "3", "Very Large" = "4"),
multiple = TRUE,
options = list("max-options-group" = 2)
),
verbatimTextOutput(outputId = "res_grp_2"),
pickerInput(
inputId = "classic",
label = "Select max two option below:",
choices = c("Low" = "1", "Medium" = "2","Large" = "3", "Very Large" = "4"),
multiple = TRUE,
options = list(
"max-options" = 2,
"max-options-text" = "No more!"
)
),
verbatimTextOutput(outputId = "res_classic"),
textOutput(outputId = "avg")
)
server <- function(input, output) {
output$res_grp_2 <- renderPrint(input$groups_2)
output$res_classic <- renderPrint(input$classic)
avg<-reactive(mean(as.numeric(input$groups_2, input$classic)))
output$avg<-renderText(avg())
}
shinyApp(ui, server)
}
'''
由于您可以在每个 pickerInput
中选择不同数量的元素,因此最好计算您自己的平均值。一种方法如下所示。
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
pickerInput(
inputId = "groups_2",
label = "Select two from each group below:",
choices = c("Low" = "1", "Medium" = "2","Large" = "3", "Very Large" = "4"),
multiple = TRUE,
options = list("max-options" = 2)
),
verbatimTextOutput(outputId = "res_grp_2"),
pickerInput(
inputId = "classic",
label = "Select max two option below:",
choices = c("Low" = "1", "Medium" = "2","Large" = "3", "Very Large" = "4"),
multiple = TRUE,
options = list(
"max-options" = 2,
"max-options-text" = "No more!"
)
),
verbatimTextOutput(outputId = "res_classic"),
textOutput(outputId = "avg")
)
server <- function(input, output) {
output$res_grp_2 <- renderPrint(input$groups_2)
output$res_classic <- renderPrint(input$classic)
avg <- reactive({
req(input$classic,input$groups_2)
numr <- sum(sum(as.numeric(input$groups_2)), sum(as.numeric(input$classic)))
denom <- sum(length(input$groups_2),length(input$classic))
avg <- numr/denom
})
output$avg<-renderText(avg())
}
shinyApp(ui, server)