Obsługuję tabele z więcej niż 100 000 wierszy i korzystam z pakietu DT
(wersja rozwojowa 0.1.56), aby wizualizować go w aplikacji Shiny.Przyciski DT: przycisk pobierania z przewijaniem pobiera tylko kilka wierszy
Ponadto używam rozszerzeń DT
jako: Buttons
, aby pobrać dane w różnych formatach. Jednak gdy rozszerzenie Scroller
jest również aktywowane, jestem w stanie pobrać tylko kilka wierszy (nie wszystkie dane).
Przykładowy kod:
library("shiny")
library("DT")
shinyApp(
ui = fluidPage(DT::dataTableOutput('tbl')),
server = function(input, output) {
output$tbl = DT::renderDataTable(
iris,extensions=c("Buttons",'Scroller'),options = list(dom = 'Bfrtip',
buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),scrollY = 50,
scroller = TRUE
))
}
)
Dodatkowo jeśli biegnę tylko tę część kodu w badania i uzyskać DataTable w przeglądarce, jestem w stanie skopiować wszystkie wiersze itd., Jak to jest w ogóle możliwe?
library("DT")
datatable(
iris,
extensions = 'Buttons', options = list(
dom = 'Bfrtip',
buttons = c('copy', 'csv', 'excel', 'pdf', 'print')
)
)
próbowałem różne podejścia:
Zmiana
scrollY =
... na liście opcji -> to działa, ale liczbascrollY
musi być ogromny faktycznie wyświetlić wszystkie wiersze danych tak można go pobrać w całości -> nie jest to dobre podejście, ponieważ moje dane pochodzą z bazy danych, uzyskuję różną liczbę wierszy oraz powoduje, że aplikacja wyjątkowo wolnoKorzystanie z opcji pageLength:
pageLength = ..., lengthMenu=c(..,..,..,..)
jednak możliwość wyboru nie jest wyświetlany na wszystkich ...
Jakieś pomysły jak mogę rozwiązać ten problem?
- Jestem świadomy o
downloadHandler()
podejścia, jednak wolałbym to zrobić poprzezDT
jako dostępne Rozszerzenia dać piękny i elegancki sposób, który pozwala na pobieranie danych w różnych formatach jednocześnie, takich jak pdf , Excel, CSV i drukuj.
** Widziałem już to samo pytanie:
Download button downloads only 145 rows in DataTables with Scroller
ale nie zostało odebrane w rozumieniu DT
pakietu
z góry dzięki
Co stanie się, jeśli dodasz 'server = FALSE' w' DT :: renderDataTable'? – Carl
Cześć Carl, w rzeczywistości działa idealnie! Dzięki! Jeśli opublikujesz to jako odpowiedź, zaakceptuję to od razu –