【发布时间】:2020-07-31 01:03:47
【问题描述】:
大家好,
我需要你的帮助:我有一个名为 data_test 的数据框,你可以用这些行重现它:
PC<-c('001','002','003','004','005','006','007','008','009','010')
A<-c('2','2','1','1','2','0','2','0','1','0')
B<-c('0','2','0','0','1','0','0','0','1','0')
C<-c('1','0','0','0','2','2','0','0','0','1')
D<-c('1','0','1','1','0','2','1','1','2','2')
E<-c('0','0','0','2','2','0','0','0','0','2')
F<-c('0','1','1','1','0','0','2','0','0','0')
data_test <- data.frame(PC, A, B, C, D, E, F)
我有三个名为“variable1”、“variable2”和“variable3”的 chekboxGroupInputs。 这些 chekboxGroupInputs 中的每一个都有以下选择:“是”=“1”,“否”=“2”,“也许”=“0”。 当我在第一个 chekboxGroupInput 中选中“否”选项时,出现次数显示为“4”:ok,如果我在第二个 chekboxGroupInput 中选中“也许”选项,出现次数为“2”:ok。 但是,如果我取消选中“也许”框,则出现次数为“0”,而不是像以前那样返回“4”。 当我检查时一切正常,但如果我取消选中,出现次数下降到“0”,我不明白为什么。 由于我的数据框中有数十个变量,因此我将拥有与变量一样多的 chekboxGroupInputs,因此,如果您知道更好的方法来做到这一点,请告诉我。 非常感谢您的帮助。 这是我的程序的可重现示例:
library(dplyr)
library(shiny)
ui <- fluidPage(
fluidRow(
column(3,
checkboxGroupInput("variable1", "Occurences of column A :",
c("Yes (1)" = "1",
"No (2)" = "2",
"Perhaps (0)" = "0")),
checkboxGroupInput("variable2", "Occurences of column B :",
c("Yes (1)" = "1",
"No (2)" = "2",
"Perhaps (0)" = "0")),
checkboxGroupInput("variable3", "Occurences of column C :",
c("Yes (1)" = "1",
"No (2)" = "2",
"Perhaps (0)" = "0"))),
column(3,
tableOutput("data")),
column(3,
textOutput("result"))
)
)
server <- function(input, output, session) {
result <- 0
observe({input$variable1
output$result <- renderText({
df1 <- filter(data_test, A %in% input$variable1)
assign("df1", df1, envir = .GlobalEnv)
result <- paste("Number of occurences = ", NROW(df1))
})
})
observe({input$variable2
if (is.null(input$variable2)){
result <- paste("Number of occurences = ", NROW(df1))}
else {
output$result <- renderText({
df2 <- filter(df1, B %in% input$variable2)
assign("df2", df2, envir = .GlobalEnv)
result <- paste("Number of occurences = ", NROW(df2))
})
}
})
observe({input$variable3
if (is.null(input$variable3)){
result <- paste("Number of occurences = ", NROW(df2)) }
else {
output$result <- renderText({
df3 <- filter(df2, C %in% input$variable3)
assign("df3", df3, envir = .GlobalEnv)
result <- paste("Number of occurences = ", NROW(df3))
})
}
})
output$data <- renderTable({data_test})
}
shinyApp(ui, server)
【问题讨论】: