Привет всем,
Мне нужна ваша помощь, пожалуйста: у меня есть фрейм данных с именем 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)
И у меня есть три chekboxGroupInputs с именем "variable1 "," переменная 2 "и" переменная 3 ". Каждый из этих chekboxGroupInputs имеет следующие варианты: «Да» = «1», «Нет» = «2», «Возможно» = «0». Когда я проверяю выбор «Нет» в первом chekboxGroupInput, количество появлений отображает «4»: хорошо, а если я проверяю выбор «Возможно» во втором chekboxGroupInput, количество вхождений равно «2»: хорошо. Но если я сниму флажок «Возможно», число появлений будет «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)