如何将加载有 fileInput 数据的名称添加到闪亮应用程序中的 selectInput?
How to add names from loaded with fileInput data to selectInput in shiny app?
我想制作一个应用程序,用户可以在其中加载一些数据,而不是自己探索它,所以,我现在想知道如何将数据集的名称传递给 selectInput
为此,我有一个像这样的简单应用程序:
library("shiny")
library("readxl")
# Define UI
ui <- fluidPage(
titlePanel("TKM"),
sidebarLayout(
sidebarPanel(
fileInput(inputId = "input",label = "input xlsx: ", multiple = FALSE, accept = c(".xlsx"))
),
mainPanel(
tableOutput("contents")
)
)
)
# Define server logic
server <- function(input, output) {
df <- reactive({ read_xlsx(input$input$datapath) })
output$contents <- renderTable({ head(df()) })
}
# Run the application
shinyApp(ui = ui, server = server)
因此,如您所见,我的数据是反应性输入,所以如果我添加一个简单的:
selectInput(inputId = "x", label = "X: ", choices = colnames(df()))
我无法 运行 具有以下功能的应用程序:
Error in df() : argument "x" is missing, with no default
知道我是如何将 df 的名称传递给 selectInput 的吗?
您可以进行如下操作
library("shiny")
library("readxl")
# Define UI
ui <- fluidPage(
titlePanel("TKM"),
sidebarLayout(
sidebarPanel(
fileInput(inputId = "input", label = "input xlsx: ", multiple = FALSE, accept = c(".xlsx"))
),
mainPanel(
uiOutput("columns"),
tableOutput("contents")
)
)
)
# Define server logic
server <- function(input, output) {
df <- eventReactive(input$input, {
read_xlsx(input$input$datapath)
})
output$columns <- renderUI({
req(df())
selectInput("x", "Choose a column", choices = colnames(df()))
})
output$contents <- renderTable({
req(df())
head(df())
})
}
# Run the application
shinyApp(ui = ui, server = server)
我想制作一个应用程序,用户可以在其中加载一些数据,而不是自己探索它,所以,我现在想知道如何将数据集的名称传递给 selectInput
为此,我有一个像这样的简单应用程序:
library("shiny")
library("readxl")
# Define UI
ui <- fluidPage(
titlePanel("TKM"),
sidebarLayout(
sidebarPanel(
fileInput(inputId = "input",label = "input xlsx: ", multiple = FALSE, accept = c(".xlsx"))
),
mainPanel(
tableOutput("contents")
)
)
)
# Define server logic
server <- function(input, output) {
df <- reactive({ read_xlsx(input$input$datapath) })
output$contents <- renderTable({ head(df()) })
}
# Run the application
shinyApp(ui = ui, server = server)
因此,如您所见,我的数据是反应性输入,所以如果我添加一个简单的:
selectInput(inputId = "x", label = "X: ", choices = colnames(df()))
我无法 运行 具有以下功能的应用程序:
Error in df() : argument "x" is missing, with no default
知道我是如何将 df 的名称传递给 selectInput 的吗?
您可以进行如下操作
library("shiny")
library("readxl")
# Define UI
ui <- fluidPage(
titlePanel("TKM"),
sidebarLayout(
sidebarPanel(
fileInput(inputId = "input", label = "input xlsx: ", multiple = FALSE, accept = c(".xlsx"))
),
mainPanel(
uiOutput("columns"),
tableOutput("contents")
)
)
)
# Define server logic
server <- function(input, output) {
df <- eventReactive(input$input, {
read_xlsx(input$input$datapath)
})
output$columns <- renderUI({
req(df())
selectInput("x", "Choose a column", choices = colnames(df()))
})
output$contents <- renderTable({
req(df())
head(df())
})
}
# Run the application
shinyApp(ui = ui, server = server)