闪亮的三个输入选择变量,它的水平和添加其他列
Posted
技术标签:
【中文标题】闪亮的三个输入选择变量,它的水平和添加其他列【英文标题】:Shiny with three inputs of selecting variable, its levels and adding other columns 【发布时间】:2021-02-21 22:57:57 【问题描述】:从代码来看,server中的renderUI与主变量选择是断开的,所以打印textOutput()到主面板。
我正在尝试构建一个闪亮的应用,在侧边栏有三个输入
-
选择主变量
要选择的选定主变量的级别(多个)
添加列的选项,然后在主面板打印所选数据
例如,用虹膜,
-
我选择物种
级别应该显示“setosa”“versicolor”“virginica”选项,但没有显示
我可以添加其他列
但是选择的行和列没有打印在主面板上
data <- iris
ui <- fluidPage(
titlePanel("Data selection"),
sidebarLayout(
sidebarPanel(
selectizeInput("show_vars", "Main column:",
choices = colnames(data), multiple = FALSE),
uiOutput("category1"),
selectInput("add_col", "Add columns to display", names(data), multiple = TRUE)
),
mainPanel(
textOutput("selected")
)
)
)
server <- function(input, output,session)
output$category1 <- renderUI(
selectizeInput('cat1', 'Levels from main column', choices = levels(input$show_vars), multiple = TRUE)
)
df_subset <- eventReactive(input$cat1,
columns = names(data)
if(input$cat1=="All") df_subset <- data
elsedf_subset <- data[data$Category1 == input$cat1, columns]
)
output$selected <- renderText( df_subset() )
shinyApp(ui, server)
【问题讨论】:
choices =c("All", levels(data[,input$show_vars]))
最好将renderText
替换为renderTable
和textOutput
替换为tableOutput
@HubertL,我猜我们俩同时在看同一个问题......
【参考方案1】:
也许你正在寻找这个
data <- iris
ui <- fluidPage(
titlePanel("Data selection"),
sidebarLayout(
sidebarPanel(
selectInput("show_vars", "Main column:",
choices = colnames(data), multiple = FALSE),
uiOutput("category1"),
selectInput("add_col", "Add columns to display", names(data), multiple = TRUE)
),
mainPanel(
DTOutput("selected")
)
)
)
server <- function(input, output,session)
output$category1 <- renderUI(
req(input$show_vars)
selectInput('cat1', 'Levels from main column', choices = c('All',levels(data[,input$show_vars])), multiple = TRUE)
)
df_subset <- reactive(
req(input$cat1,input$add_col)
columns <- names(data) %in% input$add_col
if(input$cat1=="All") dfsubset <- data[,columns]
else dfsubset <- data[data[,input$show_vars] == input$cat1, columns]
dfsubset <- as.data.frame(dfsubset)
)
output$selected <- renderDT( df_subset() )
shinyApp(ui, server)
【讨论】:
以上是关于闪亮的三个输入选择变量,它的水平和添加其他列的主要内容,如果未能解决你的问题,请参考以下文章