R 闪亮:如何设置依赖于 updateVarSelectInput() 的 selectInput
R shiny: how to set selectInput that depends on the updateVarSelectInput()
我想上传 dataframe
闪亮的。 Shiny 将首先阅读其 colnames
,并为用户提供 select column
的选项,然后使用此 selected 列,用户可以 select levels
在本栏中,可作为输入进一步分析。
它与此 example 非常相似,但 selected 值是 output,我无法将其用于下游分析。
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)
我想上传 dataframe
闪亮的。 Shiny 将首先阅读其 colnames
,并为用户提供 select column
的选项,然后使用此 selected 列,用户可以 select levels
在本栏中,可作为输入进一步分析。
它与此 example 非常相似,但 selected 值是 output,我无法将其用于下游分析。
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)