在Shiny中,我希望在使用
All
时能够选择selectInput
。
但是,在下面的shiny应用程序中,当我使用
selectInput
作为列Species
并为All
指定选项choices
时,shiny将列转换为数字(而不是因子)。
library(shiny)
library(palmerpenguins)
# Load the palmerpenguins dataset
data("penguins")
# Define UI
ui <- fluidPage(
titlePanel("Penguin Species Selector"),
sidebarLayout(
sidebarPanel(
selectInput("species", "Select Species:",
choices = c("All", unique(penguins$species))),
hr(),
helpText("Select a species to view its data.")
),
mainPanel(
tableOutput("penguin_table")
)
)
)
# Define server logic
server <- function(input, output) {
output$penguin_table <- renderTable({
if (input$species == "All") {
return(penguins)
} else {
return(subset(penguins, species == input$species))
}
})
}
# Run the application
shinyApp(ui = ui, server = server)
当我删除
All
并使用这个choices = unique(penguins$species)
(见下文)时,闪亮的应用程序会将列显示为一个因素,但现在我无法选择All
library(shiny)
library(palmerpenguins)
# Load the palmerpenguins dataset
data("penguins")
# Define UI
ui <- fluidPage(
titlePanel("Penguin Species Selector"),
sidebarLayout(
sidebarPanel(
selectInput("species", "Select Species:",
choices = unique(penguins$species)),
hr(),
helpText("Select a species to view its data.")
),
mainPanel(
tableOutput("penguin_table")
)
)
)
# Define server logic
server <- function(input, output) {
output$penguin_table <- renderTable({
if (input$species == "All") {
return(penguins)
} else {
return(subset(penguins, species == input$species))
}
})
}
# Run the application
shinyApp(ui = ui, server = server)
这是因为
factor
在内部存储为数字。一个简单的解决方法是将物种转变为角色。
choices = c("All", unique(as.character(penguins$species)))
完整代码-
library(shiny)
library(palmerpenguins)
# Load the palmerpenguins dataset
data("penguins")
# Define UI
ui <- fluidPage(
titlePanel("Penguin Species Selector"),
sidebarLayout(
sidebarPanel(
selectInput("species", "Select Species:",
choices = c("All", unique(as.character(penguins$species)))),
hr(),
helpText("Select a species to view its data.")
),
mainPanel(
tableOutput("penguin_table")
)
)
)
# Define server logic
server <- function(input, output) {
output$penguin_table <- renderTable({
if (input$species == "All") {
return(penguins)
} else {
return(subset(penguins, species == input$species))
}
})
}
# Run the application
shinyApp(ui = ui, server = server)