2015-06-10 70 views
9

Używając pakietu R shiny & DT, tworzę określone tabele. Liczba kolumn różni się, ponieważ na dane wejściowe użytkownika & nie jest ustalona. Dołączyłem poniższy fragment kodu, aby umieścić poziomy pasek przewijania, aby przy dużej liczbie kolumn użytkownik mógł przewijać kolumny, które nie są bezpośrednio widoczne.Jak ustawić poziomy pasek przewijania widoczny w DT :: datatable

server.R:

output$results <- DT::renderDataTable({ 
    DT::datatable(data = datasetInput(), 
        options = list(scrollX = TRUE,...) 
       ) 
    }) 
<code reduced for brevity> 

Stosując powyższy kod, poziomy pasek przewijania nie jest widoczny, ale w pierwszym pojawia się po kliknięciu na wiersz i naciśnij strzałkę w prawo na klawiaturze. Czy istnieje jakikolwiek sposób, w jaki pasek przewijania staje się widoczny zaraz po uruchomieniu tabeli, bez względu na to, ile kolumn mam, i mogę przeciągnąć pasek przewijania za pomocą wskaźnika myszy?

Aktualizacja:

Próbowałem kod odpowiedź poniżej, a to, co widzę - nie ma poziomego paska przewijania.

enter image description here

+1

proszę zawsze podać swój sessionInfo(). Nie powiedziałeś tego, ale zgaduję, że używasz Mac OS X. Jeśli tak jest, nic nie jest zaskakujące. To jest domyślne zachowanie Maca - paski przewijania są domyślnie ukryte, dopóki nie zaczniesz przewijać. –

+0

Dzięki Yihui. To prawda, używam MacOSX. Upewnię się, że dostarczę moją sessionInfo() w przyszłości. –

+0

Nie używam komputera Mac często, ale domyślam się, że może istnieć sposób, aby pasek przewijania był zawsze widoczny. Sprawdź, czy masz szczęście w Google ... –

Odpowiedz

14

I nie sądzę, że można (lub powinien) wymusić przewijania łatwo, jeśli nie potrzebujesz, ale powyższy kod działa dobrze dla mnie, to pokazuje pasek przewijania, gdy strona inicjuje. Może problem dotyczy danych lub czegoś innego.

Oto przykład, który ma minimalne poziomy pasek przewijania na stronie obciążenia

runApp(shinyApp(
    ui = fluidPage(
    DT::dataTableOutput("results", width = 300) 
), 
    server = function(input, output, session) { 
    output$results <- DT::renderDataTable(
     mtcars, 
     options = list(scrollX = TRUE) 
    ) 
    } 
)) 
+0

Mam na myśli, że pasek przewijania działa w moim kodzie, ale nie jest widoczny, dopóki nie kliknę w wiersz i nie uderzę w prawą strzałkę. Nie jest widoczny, więc nie mogę użyć wskaźnika myszy, aby go przeciągnąć. –

+0

Nie wiem, ile lub nawet to ma znaczenie, ale używam opcji wewnątrz 'DT :: datatable' i używasz go wewnątrz' DT :: renderDataTable'. Zgaduję, że to nie problem. Ale wciąż nie widzę ** paska przewijania bez użycia klawiatury i zdecydowanie nie mogę używać myszy do przewijania. –

+0

masz rację, korzystanie z opcji w 'renderDataTable' vs w' datatable' nie ma znaczenia. Jak już wspomniałem, podejrzewam, że problem nie dotyczy danych, ale ich zestaw danych lub coś innego o kodzie powoduje to, ponieważ prosty przykład, taki jak ten, który pokazałem, działa. –

1

Spróbuj tego:

DT::datatable(sta, options = list(
    pageLength=50, scrollX='400px'), filter = 'top')