Использование https://demo.shinyapps.io/029-row-selection/ в качестве ссылки, я создаю приложение, чтобы выбрать любое количество строк в отсортированных/несортированных данных & получить соответствующие индексы. Однако, если я использую код как есть, он не работает с отсортированными данными. Поэтому я изменил код следующим образом:Выбор и извлечение нескольких строк из отсортированного datatable в R Shiny
server.R
library(shiny)
shinyServer(function(input, output) {
output$tbl <- renderDataTable(
mtcars,
options = list(pageLength = 10),
callback = "function(table) {
table.on('click.dt', 'tr', function() {
$(this).toggleClass('selected');
Shiny.onInputChange('rows',
table.rows('.selected').data()[0][0]); # returns actual row number but does not allow multiple selection
});
}"
)
output$rows_out <- renderText({
paste(c('You selected these rows on the page:', input$rows),
collapse = ' ')
})
})
ui.R
library(shiny)
shinyUI(fluidPage( title = 'Row selection in DataTables', sidebarLayout(
sidebarPanel(textOutput('rows_out')),
mainPanel(dataTableOutput('tbl')),
position = 'right' )))
Поэтому я использую Shiny.onInputChange('rows',table.rows('selected').data()[0][0]);
так, что, когда таблица sorted, он возвращает номер строки в фактическом наборе данных, а не индекс, основанный на видимой таблице. Но проблема в том, что он возвращает только первый выбор.
Я также попытался использовать Shiny.onInputChange('rows',table.rows('selected').data()[0][0].toArray());
, чтобы получить все выбранные номера строк в массиве, но, как ни странно, он ничего не возвращает, даже не первый выбранный номер строки (например, выше).
Я использую shiny_0.11. Используя пакет DT и обновление до shiny_0.12, я должен изменить весь свой блестящий код (это всего лишь небольшая часть моего кода), потому что я видел, что есть много изменений от предыдущей к текущей версии. Но, в любом случае, я попытаюсь обновить свой код. –
@ KomalRathi Хорошо, дайте мне знать, если у вас возникнут проблемы при переключении на DT. –