我有一个小小的闪亮应用程序,它将接受用户的输入并在以后基于它创建一个绘图。 到目前为止,我的侧边栏看起来像这样:
我现在想用“验证”检查是否点击了6种颜色选项中的一种,如果没有,请让用户这样做。
到目前为止,我的代码只检查红色。
我也想知道是否有方法有一个盒子(例如水果) 自动检查整个时间。例如:启动应用程序Apple已预先选择,但如果您取消选择它,Banana(或Citrus)会自动选择。有没有使用这种方法而不是验证的解决方案?
这是我的代码:
library(shiny)
library(ggplot2)
library(plotly)
library(data.table)
library(DT)
library(shinyjs)
ui <- shinyUI(fluidPage(
tabsetPanel(
tabPanel("Upload",
sidebarLayout(
sidebarPanel(width = 4,
fileInput('file1', 'Choose CSV File',
accept=c('text/csv',
'text/comma-separated-values,text/plain',
'.csv')),
#tags$hr(),
checkboxInput('header', 'Header', TRUE),
radioButtons('sep', 'Separator',
c(Comma=',',
Semicolon=';',
Tab='\t'),
',')
),
mainPanel(dataTableOutput('table1')
))
),
tabPanel("fruits",
sidebarLayout(
sidebarPanel(width = 4,
uiOutput("fruitTable")
),
mainPanel(dataTableOutput('table2')
)))
)))
server <- shinyServer(function(input, output) {
file_data <- reactive({
fruit_file1 <- input$file1
if(is.null(fruit_file1)){
return(NULL)
}else{
fruits <- fread(fruit_file1$datapath, header=input$header, sep=input$sep, check.names = FALSE)
return(fruits)
}
})
output$table1 <- renderDataTable({
if(is.null(file_data())){
return(NULL)
}else{
datatable( file_data(),options = list(pageLength = 25))
}
})
output$table2 <- renderDataTable({
if(is.null(file_data())){
return(NULL)
}else{
validate(
need(input$fruit, 'Check at least one fruit!'),
need(input$stim, 'Check at least one fertilizer!'),
need(input$marker1, 'Check at least one color!')
datatable( file_data(),options = list(pageLength = 25))
}
})
output$fruitTable <- renderUI({
if(is.null(file_data())){
return()
}else{
tagList(
checkboxGroupInput(inputId = "fruit",
label = "Fruit",
choices = c("Apple", "Banana", "Citrus")),
radioButtons(inputId = "month",
label = "Month",
choices = c("1"= 1, "9" = 2, "12" = 3 ),
selected = 1,
inline = TRUE),
checkboxGroupInput(inputId = "stim",
label = "Stimulation",
choices = list("A","B", "C")),
#choices = c(unique(as.character(file_data()[,3])))),
checkboxGroupInput(inputId = "marker1",
label = "red",
choices= list("+", "-"),
#choices = c(unique(as.character(file_data()[,4]))),
inline = TRUE),
checkboxGroupInput(inputId = "marker2",
label = "green",
choices= list("+", "-"),
#choices = c(unique(as.character(file_data()[,5]))),
inline = TRUE),
checkboxGroupInput(inputId = "marker3",
label = "yellow",
choices= list("+", "-"),
#choices = c(unique(as.character(file_data()[,6]))),
inline = TRUE)
)
}
})
})
shinyApp(ui = ui, server = server)
以及指向我使用的file的链接。
上传文件后,您需要将标签切换为水果。(我还没想到,如何在上传后自动切换标签)
感谢您的帮助!
答案 0 :(得分:1)
您可以使用:
need(!is.null(input$marker1) | !is.null(input$marker2) | !is.null(input$marker3),
'Check at least one color!')