2014-09-04 17 views
9

Mam app gdzie chcę wyciągać wartości z tabeli przeglądowej w oparciu o dane wejściowe użytkownika. Tabela referencyjna jest testem statystycznym, opartym na obliczeniach, które byłyby zbyt powolne dla wszystkich różnych kombinacji danych wejściowych użytkownika. Stąd tablica przeglądowa dla wszystkich możliwości.Importowanie i dostępu do dużych plików danych w błyszczące

Ale ... w tej chwili tabela ma około 60 MB (jako .Rdata) lub 214 MB (jako .csv), a zwiększy się, jeśli zwiększę liczbę możliwych wejść użytkownika. Zmniejszyłem już liczbę znaczących liczb w danych (do 3) i usunąłem nazwy wierszy/kolumn.

Oczywiście, mogę wczytywać tabelę przeglądową poza funkcją serwera biernej, ale to jeszcze wziąć porządny kawał czasu, aby załadować w tych danych. Czy ktoś ma jakieś wskazówki dotyczące radzenia sobie z dużą ilością danych w Shiny? Dzięki!

+0

Czy próbowałeś 'fread()' lub 'readRDS()'? Zastanawiam się, czy mają dla ciebie znaczenie. – jazzurro

+0

Jeśli sugestia Jazzurro jest wciąż zbyt wolna, możesz rozważyć użycie bazy danych. mongodb działa dobrze z R poprzez rmongodb. W ten sposób możesz wyszukiwać tylko to, czego potrzebujesz i powinno być bardzo szybkie. –

+0

dzięki za sugestie, jazzurro i Jan. readRDS obniża tabelę do 25 MB, dzięki czemu jest łatwiejsza w zarządzaniu. zajrzę do opcji bazy danych, jeśli początkowy odczyt będzie nadal zbyt wolny. –

Odpowiedz

4

flaneuse, wciąż pracujemy z mniejszym zestawem, który jednak zostaliśmy eksperymentowanie z:

  1. Korzystanie RDS dla naszych danych

    Jak @jazzurro wspomniano powyżej RDS, a ty wydaje się wiedzieć, jak to zrobić, ale składnia dla innych jest poniżej.

    Format .rds pozwala wnieść w jednym obiekcie R, dzięki czemu można ją zmienić, jeśli musi być.

    W kodzie prep danych, na przykład:

    mystorefile <- file.path("/my/path","data.rds") 
    # ... do data stuff 
    
    # Save down (assuming mydata holds your data frame or table) 
    saveRDS(mydata, file = mystorefile) 
    

    W swojej błyszczącej kodu:

    # Load in my data 
    x <- readRDS(mystorefile) 
    

    Pamiętaj, aby skopiować plik swoje dane .rds do swojej aplikacji katalogu podczas wdrażania. Używamy katalogu danych /myapp/data, a następnie plik.path dla pliku sklepu jest zmieniany na "./data" w naszym błyszczącym kodzie.

  2. global.R

    Umieściliśmy nasze readRDS połączeń do załadowania w naszych danych w tym globalnym pliku (zamiast w server.R przed shinyServer() rozmowy), tak że prowadzony jest raz i jest dostępny dla wszystkich sesjach, z dodatkowym atutem może być postrzegane przez ui.R.

    Zobacz ten scoping explanation dla R błyszczące.

  3. ciąć i kości góry

    Standardowe raporty codziennego użytku najnowsze dane. Więc zrobić mały latest.dt w moim global.R mniejszej podgrupie moich danych. Tak więc landing page z najnowszymi wykresami współpracuje z tym mniejszym zestawem danych , aby uzyskać szybsze wykresy.

    Zakładka danych niestandardowych, która korzysta z full.dt, znajduje się w osobnej zakładce. Jest wolniejszy, ale na tym etapie użytkownik jest bardziej cierpliwy i zastanawia się, jakie daty i inne parametry wybrać.

    Pomysł na ten podzbiór może ci pomóc.

Byłby zainteresowany tym, co inni (z bardziej wymagających zestawów danych próbowali)!

Powiązane problemy