【发布时间】:2021-08-21 16:17:36
【问题描述】:
我正在尝试创建一个应用程序,您可以在其中选择要查看的列。
这篇文章对我帮助很大:Shiny How to dynamically select columns of imported dataset for further analysis
但是,如果用户不点击选项并写入想要查看的列,我希望能够选择列。
现在,为了能够选择列,您需要单击或写入一列。
但是,当您尝试编写超过 1 列时(例如:“cyl mpg hp”,在同一行中),它不会出现任何内容。
这是代码:
ui <- fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
selectInput("select", "Select columns to display", c('col1,col2'), multiple = TRUE),
actionButton("update", "Update Data set", class = "btn-primary",style='padding:4px; font-size:120%')
),
# Show a plot of the generated distribution
mainPanel(
h2('The Mydata'),
#tableOutput("mytable")
DT::dataTableOutput("mytable")
)
)
)
library(shiny)
library(DT)
server <- function(session, input, output) {
data <- reactive({
mtcars
})
filtereddata <- eventReactive({
input$update
data()
}, {
req(data())
if(is.null(input$select) || input$select == "")
data() else
data()[, colnames(data()) %in% input$select]
})
observeEvent(data(), {
updateSelectInput(session, "select", choices=colnames(data()))
})
output$mytable <- renderDataTable(filtereddata())
}
# Run the application
shinyApp(ui = ui, server = server)
我尝试过另一种方式,比如这里:https://shiny.rstudio.com/reference/shiny/1.6.0/varSelectInput.html,但我遇到了同样的问题。
提前致谢
问候
【问题讨论】:
-
您的代码非常适合我。如果我输入
mpg和cyl,然后输入Enter,我会得到只有这两列的mtcars 表。 -
@Julian_Hn 我不明白。如果我选择一列并单击更新按钮,我只能获取包含选定列的表。你做了什么?
-
完全一样。我输入了
mpg和cyl,然后单击更新按钮(或回车)。表格会立即为我更新 -
@Julian_Hn 但是您是否在同一行同时写了这些列?因为如果我输入 mpg 然后输入 cyl,表格会完美更新。我的问题是,当您尝试像这样在搜索按钮“mpg cyl”中写入时,表格不会更新。这就是我想要解决的问题。
-
啊...对不起,我误解了你的问题,我会看看我能做什么
标签: r shiny dt selectinput