我正在尝试创建一个闪亮的应用程序,能够根据用户的选择选择行和列。对于选择我使用的列pickerInput
和选择行,扩展名“选择”和您可以在代码中看到的更多选项(我看到这篇文章非常有效。)
问题是我收到了这个警告,我认为它与选择的类型不兼容。我担心我没有看到的东西会产生更多的错误。
警告:Select 扩展无法在服务器端处理模式下正常工作。建议仅在客户端处理模式下使用 Select 扩展(通过设置server = FALSE
in DT::renderDT()
)或使用 DT 自己的选择实现(参见selection
?DT::datatable 中的参数)。
另一方面,当我选择“行”时,我不知道如何从“pickerInput”和操作按钮中隐藏“选择输入”。
这是代码:
library(shiny)
library(shinyWidgets)
library(dplyr)
ui <- fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
radioButtons("type_select", "What do you want to select?",
c("Rows" = "Rows",
"Columns" = "Columns")),
uiOutput("picker"),
actionButton("view", "View Selection")
),
# Show a plot of the generated distribution
mainPanel(
h2('Mydata'),
DT::dataTableOutput("table"),
)
)
)
library(shiny)
library(DT)
server <- function(session, input, output) {
data <- reactive({
iris
})
output$picker <- renderUI({
pickerInput(inputId = 'pick',
label = 'Choose',
choices = colnames(data()),
options = list(`actions-box` = TRUE),multiple = T)
})
datasetInput <- eventReactive(input$view,{
datasetInput <- data() %>%
select(input$pick)
return(datasetInput)
})
output$table <- renderDT({
if(input$type_select == "Rows"){
datatable(
data(),
selection = "none",
filter="top",
rownames = FALSE,
extensions = c("Buttons", "Select"),
options = list(
select = TRUE,
dom = 'Blfrtip',
buttons =
list('copy', 'print', list(
extend = 'collection',
buttons = list(
list(extend = 'csv', filename = "File", title = NULL,
exportOptions = list(modifier = list(selected = TRUE))),
list(extend = 'excel', filename = "File", title = NULL,
exportOptions = list(modifier = list(selected = TRUE)))),
text = 'Download'
))
),
class = "display"
)
}else{
datatable(
datasetInput(),
filter="top",
rownames = FALSE,
extensions = 'Buttons',
options = list(
dom = 'Blfrtip',
buttons =
list('copy', 'print', list(
extend = 'collection',
buttons = list(
list(extend = 'csv', filename = "File", title = NULL),
list(extend = 'excel', filename = "File", title = NULL)),
text = 'Download'
))
),
class = "display"
)
}
})
}
# Run the application
shinyApp(ui = ui, server = server)
接下来,我将向您展示该应用程序的一些屏幕截图,以解释其工作原理。
事实上,如果你想检查选择是否顺利,你可以下载一个文件(例如excel),你会看到你的选择是好的。
但是,我不知道如何解决我上面解释的问题。
有人可以帮助我吗?我绝望了。
首先十分感谢