如何在闪亮的用户输入复选框中创建反应式数据框和 table
How to create a reactive data frame and table from user input checkboxes in shiny
所以基本上我正在尝试开发一个用户界面,如果他们在复选框中患有这种疾病,那么人们可以 select 是或否。然后它将为每种相应的疾病获取 yes/no 答案并创建一个数据框,以便可以呈现日期 table 并且人们可以看到他们的回答。我一直在努力尝试获取在复选框中单击的内容,并将其放入一个数据框中,其中包含我在编码中为其创建另一个日期框的疾病。我已经尝试了几件事,现在它一直说当我尝试从用户创建数据框时找不到对象 'data1'、'smoking' 和 'diabetes'会select。看来我的 if/else 语句不起作用。下面是我的代码
library(shiny)
library(DT)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("IVD"),
sidebarLayout(
sidebarPanel(
checkboxGroupInput("Diabete", "Diabetes:",
choices = c("Yes" = "yes0",
"No" = "no0")),
checkboxGroupInput("Smoke", "Smoking:",
c("Yes" = "yes1",
"No" = "no1"))),
mainPanel(
fluidRow(actionButton("button", "Click for Risk Prediction")),
dataTableOutput("summary_table")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
observeEvent(input$button, {
output$summary_table<-renderDataTable({
a<- eventReactive(input$Diabete, {
if (input$Diabete == "yes0") {
a=1
} else {
a=0
}})
b<- eventReactive(input$Smoke, {
if (input$Diabete == "yes1") {
b=1
} else {
b=0
}})
ivd<-c('Diabetes','Smoking')
#data<- c(11,10,sugar,8,7,6,5,4,3,2,1)
values <- reactiveValues()
values$ivd <- data.frame()
eventReactive(input$Diabete, {
diabetes <- a
smoking <- b
da <- data.frame(diabetes, smoking)
data1 <- rbind(values$ivd, da)
})
ivd_data<-data.frame(ivd,data1,stringsAsFactors=FALSE )
print(ivd_data)
})
})
}
# Run the application
shinyApp(ui = ui, server = server)
试试这个
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("IVD"),
sidebarLayout(
sidebarPanel(
checkboxGroupInput("Diabete", "Diabetes:",
choices = c("Yes" = "yes0",
"No" = "no0")),
checkboxGroupInput("Smoke", "Smoking:",
c("Yes" = "yes1",
"No" = "no1"))),
mainPanel(
fluidRow(actionButton("button", "Click for Risk Prediction")),
DTOutput("summary_table")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
observeEvent(input$button, {
a<- eventReactive(input$Diabete, {
a = ifelse(input$Diabete == "yes0",1,0)
})
b<- eventReactive(input$Smoke, {
b = ifelse(input$Smoke == "yes1",1,0)
})
ivd<- data.frame(a='Diabetes',b='Smoking')
data1 <- reactive({
data <- rbind(ivd,data.frame(a=a(),b=b()))
})
output$summary_table <- renderDT(data1())
})
}
# Run the application
shinyApp(ui = ui, server = server)
所以基本上我正在尝试开发一个用户界面,如果他们在复选框中患有这种疾病,那么人们可以 select 是或否。然后它将为每种相应的疾病获取 yes/no 答案并创建一个数据框,以便可以呈现日期 table 并且人们可以看到他们的回答。我一直在努力尝试获取在复选框中单击的内容,并将其放入一个数据框中,其中包含我在编码中为其创建另一个日期框的疾病。我已经尝试了几件事,现在它一直说当我尝试从用户创建数据框时找不到对象 'data1'、'smoking' 和 'diabetes'会select。看来我的 if/else 语句不起作用。下面是我的代码
library(shiny)
library(DT)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("IVD"),
sidebarLayout(
sidebarPanel(
checkboxGroupInput("Diabete", "Diabetes:",
choices = c("Yes" = "yes0",
"No" = "no0")),
checkboxGroupInput("Smoke", "Smoking:",
c("Yes" = "yes1",
"No" = "no1"))),
mainPanel(
fluidRow(actionButton("button", "Click for Risk Prediction")),
dataTableOutput("summary_table")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
observeEvent(input$button, {
output$summary_table<-renderDataTable({
a<- eventReactive(input$Diabete, {
if (input$Diabete == "yes0") {
a=1
} else {
a=0
}})
b<- eventReactive(input$Smoke, {
if (input$Diabete == "yes1") {
b=1
} else {
b=0
}})
ivd<-c('Diabetes','Smoking')
#data<- c(11,10,sugar,8,7,6,5,4,3,2,1)
values <- reactiveValues()
values$ivd <- data.frame()
eventReactive(input$Diabete, {
diabetes <- a
smoking <- b
da <- data.frame(diabetes, smoking)
data1 <- rbind(values$ivd, da)
})
ivd_data<-data.frame(ivd,data1,stringsAsFactors=FALSE )
print(ivd_data)
})
})
}
# Run the application
shinyApp(ui = ui, server = server)
试试这个
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("IVD"),
sidebarLayout(
sidebarPanel(
checkboxGroupInput("Diabete", "Diabetes:",
choices = c("Yes" = "yes0",
"No" = "no0")),
checkboxGroupInput("Smoke", "Smoking:",
c("Yes" = "yes1",
"No" = "no1"))),
mainPanel(
fluidRow(actionButton("button", "Click for Risk Prediction")),
DTOutput("summary_table")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
observeEvent(input$button, {
a<- eventReactive(input$Diabete, {
a = ifelse(input$Diabete == "yes0",1,0)
})
b<- eventReactive(input$Smoke, {
b = ifelse(input$Smoke == "yes1",1,0)
})
ivd<- data.frame(a='Diabetes',b='Smoking')
data1 <- reactive({
data <- rbind(ivd,data.frame(a=a(),b=b()))
})
output$summary_table <- renderDT(data1())
})
}
# Run the application
shinyApp(ui = ui, server = server)