2015-07-09 3 views
1

Уважаемые мастера Shiny и DT! Я пытаюсь использовать плагин естественной сортировки в своем блестящем приложении, но он, похоже, не работает. Я думаю, что он работал с предыдущей версией Shiny или/и до пакета DT. Кто-нибудь может мне помочь? Смотрите мой пример ниже (я пытаюсь разобраться последний столбец):Естественная сортировка в Shiny DT (данные) не работает

server.R

library(shiny) 
require(DT) 
shinyServer(function(input, output) { 
    output$example <- DT::renderDataTable({ 
     table = cbind(LETTERS[1:5],matrix(1:20,nrow=5),c(1,2,3,10,"a")) 
     table = rbind(c("filtered",round(rnorm(5),3)),table) 
     DT::datatable(table, 
         rownames = FALSE, 
         extensions = list(FixedColumns = list(leftColumns = 1)), 
         options = list(
          columnDefs = list(list(type = "natural", targets = "_all")))) 
    }) 
}) 

ui.R

library(shiny) 
require(DT) 
shinyUI(
    fluidPage(
     tags$head(
      tags$script(src = "http://cdn.datatables.net/1.10.6/js/jquery.dataTables.min.js", type = "text/javascript"), 
      tags$script(src = "http://cdn.datatables.net/plug-ins/1.10.7/sorting/natural.js", type = "text/javascript") 
     ), 
     DT::dataTableOutput('example') 
    ) 
) 
+0

Не похоже, что ваша начальная таблица загружена должным образом. –

+0

Извините, набрав ошибку, но идея остается прежней ... – user1991825

+0

Сортировка по всем столбцам отлично работает для меня. Появляется ли ошибка или предупреждение? – Shiva

ответ

1

В current development version из DT в (> = 0.1.16), вы можете включить этот плагин с помощью datatable(..., plugins = 'natural'), например

library(shiny) 
library(DT) 
shinyApp(
    ui = fluidPage(
    DT::dataTableOutput('example') 
), 
    server = function(input, output) { 
    output$example <- DT::renderDataTable({ 
     table = cbind(LETTERS[1:5],matrix(1:20,nrow=5),c(1,2,3,10,"a")) 
     table = rbind(c("filtered",round(rnorm(5),3)),table) 
     table 
    }, server = FALSE, plugins = 'natural', options = list(
     columnDefs = list(list(type = "natural", targets = "_all")) 
    )) 
    } 
) 

Для получения дополнительной информации см. the documentation.

+0

Спасибо, вы, ребята, действительно добиваетесь прогресса! Но на нашем сервере мы работаем с действительно огромными таблицами (конечно, мы используем 'Scroller'), поэтому мы не хотим использовать' server = FALSE'. Но это не работает с '= TRUE'. – user1991825

+0

@ user1991825 К сожалению, этот плагин не был разработан для режима обработки на стороне сервера. Для реализации естественной сортировки для 'server = TRUE' может быть немного задействован, но вы можете в любое время подать запрос функции на https://github.com/rstudio/DT/issues. Я посмотрю, если это возможно, когда у меня будет больше времени. –

Смежные вопросы