我有一个闪亮的selectInput面板。到目前为止,我只处理selectInput中选项的固定值。
现在,我想要根据闪亮的Ui中的其他一些条件来改变这些选择。
示例:
Ui.R
shinyUI(fluidPage(
fluidRow(column(3,
wellPanel(
h4("Data Upload"),
fileInput('file1', h5('Choose Your Model Data'), accept=c('text/csv','text/comma-separated-values,text/plain','.OUT')),
fileInput('file2', h5('Choose Your Observation Data'), accept=c('text/csv','text/comma-separated-values,text/plain','.xlsx'))
),
wellPanel(uiOutput("check"))))
Server.R
shinyServer(function(input, output) {
output$check <- renderUI({
selectInput("check", label = h4("Dataset Selection"), choices = c("Model" = 1, "Observation" = 2, "Both" = 3), selected = 1, multiple = F )
})
a <- reactive({
fileinput1 <- input$file1
if (is.null(fileinput1))
return(NULL)
read.table(fileinput1$datapath, header = TRUE, col.names = c("Ei","Mi","hours","Nphy","Cphy","CHLphy","Nhet","Chet","Ndet","Cdet","DON","DOC","DIN","DIC","AT","dCCHO","TEPC","Ncocco","Ccocco","CHLcocco","PICcocco","par","Temp","Sal","co2atm","u10","dicfl","co2ppm","co2mol","pH"))
})
#Upload Observation Data
b <- reactive({
fileinput2 <- input$file2
if (is.null(fileinput2))
return(NULL)
#xlfile <- list.files(pattern = ".xlsx")
xlfile <- fileinput2[1]
wb <- loadWorkbook(xl_file)
sheet_ct <- wb$getNumberOfSheets()
b <- rbindlist(pblapply(1:sheet_ct, function(x) {
res <- read.xlsx(xl_file, x)
}), fill=TRUE)
b <- b [-c(1),]
print (b)
})
现在我想根据文件输入在selectInput动态中做出选择。
答案 0 :(得分:1)
我试图纠正server.R文件中的一些问题。请注意,我遵循以下算法
库(闪亮)库(xlsx)
shinyServer(function(input, output) {
a <- reactive({
fileinput1 <- input$file1
if (is.null(fileinput1))
return(NULL)
#read.table(fileinput1$datapath, header = TRUE, col.names = c("Ei","Mi","hours","Nphy","Cphy","CHLphy","Nhet","Chet","Ndet","Cdet","DON","DOC","DIN","DIC","AT","dCCHO","TEPC","Ncocco","Ccocco","CHLcocco","PICcocco","par","Temp","Sal","co2atm","u10","dicfl","co2ppm","co2mol","pH"))
#Please change this part back to your code as I dont have your file based on the column names above
read.table(fileinput1$datapath, header= TRUE)
})
#Upload Observation Data
b <- reactive({
fileinput2 <- input$file2
if (is.null(fileinput2))
return(NULL)
#xlfile <- list.files(pattern = ".xlsx")
xlfile <- fileinput2$datapath
wb <- loadWorkbook(xlfile)
sheet_ct <- wb$getNumberOfSheets()
b <- rbind(list(lapply(1:sheet_ct, function(x) {
res <- read.xlsx(xlfile, x)
})))
b <- b [-c(1),]
print(b)
})
getModel <- reactive({
if(!is.null(a()) & !is.null(b()))
{
c("Model", "Observation", "Both")
}
else if(!is.null(a()))
{
"Model"
}
else if(!is.null(b()))
{
"Observation"
}
})
output$check <- renderUI({
selectInput("check", label = h4("Dataset Selection"), choices = as.list(getModel()), multiple = F )
})
})