R闪亮:如何设置取决于updateVarSelectInput()的selectInput



我想上传一个闪亮的dataframe。Shiny将首先读取其colnames,并为用户提供选择column的选项,然后使用此选定列,用户可以选择此列中的levels,该列可以用作输入进行进一步分析。

它与这个例子非常相似,但所选的值是输出,我不能将其用于下游分析。

library(shiny)
myDF <- data.frame(A = 1:4, B = 3:6, C = 6:9, D = 10:13)
runApp(
list(
ui = fluidPage(
uiOutput("myList"),
uiOutput("myNumbers")
)
, server = function(input, output, session){
output$myList <- renderUI({
selectInput("compName", "Company Name:", LETTERS[1:4])
})
output$myNumbers <- renderUI({
selectInput("compNo", "Product Line:", myDF[, input$compName])
})
}
)
)

我的phsudo代码是这样的:

library(shiny)
runApp(
list(
ui = fluidPage(
fileInput(inputId = "rawFile"), # Read the dataframe
varSelectInput(inputId = "getColumn",
data = ""),
selectInput(inputId = "levels",
choices = "")
)
, server = function(input, output, session){

df <- reactive({
inFile <- input$rawFile
if (is.null(inFile)){return(NULL)}
df <- read.csv(filepath, header = T),
)
return(df)
})

getColumn <- reactive({
return(as.character(input$getColumn))
})

updateVarSelectInput(
inputId = "getColumn",
data = df(),
selected = ""
)

## my problem is here:
updateSelectInput(
inputId = "levels",
choices = levels(as.factor(df[, getColumn()])),
selected = NULL
)

})
}
)
)

这里有很多语法问题。以后,请确保您有匹配的括号,并且它是MRE。以下内容应该有效。

library(shiny)
ui = fluidPage(
fileInput(inputId = "rawFile", label="File"), # Read the dataframe
varSelectInput(inputId = "getColumn", label="Get Column", data = ""),
selectInput(inputId = "levels", label="Levels", choices = "")
)
server = function(input, output, session){

df <- reactive({
inFile <- input$rawFile
if (is.null(inFile)){return(NULL)}
read.csv(inFile$datapath, header = T)
})

observeEvent(df(),{
updateVarSelectInput(session, inputId = "getColumn",data = df(),selected = "")
})

observeEvent(input$getColumn, {
updateSelectInput(session,inputId = "levels", choices = levels(as.factor(df()[[input$getColumn]])),selected = NULL)
})
}
shinyApp(ui, server)

最新更新