Ich habe eine App, in der ich Werte aus einer Nachschlagetabelle basierend auf Benutzereingaben herausziehen möchte. Die Referenztabelle ist ein statistischer Test, der auf einer Berechnung basiert, die für alle verschiedenen Kombinationen von Benutzereingaben zu langsam ist. Daher eine Nachschlagetabelle für alle Möglichkeiten.
Aber ... im Moment ist die Tabelle ungefähr 60 MB (als .Rdata) oder 214 MB (als .csv), und sie wird viel größer, wenn ich die möglichen Benutzereingaben erweitere. Ich habe bereits die Anzahl der signifikanten Zahlen in den Daten reduziert (auf 3) und die Zeilen- / Spaltennamen entfernt.
Offensichtlich kann ich die Nachschlagetabelle außerhalb der reaktiven Serverfunktion laden, aber es wird immer noch einen guten Teil der Zeit brauchen, um diese Daten zu laden. Hat jemand Tipps zum Umgang mit großen Datenmengen in Shiny? Danke!
Verwenden Sie rds für unsere Daten
Wie @jazzurro oben erwähnt hat, und Sie scheinen zu wissen, wie das geht, aber die Syntax für andere ist unten.
Mit dem Format .rds
können Sie ein einzelnes R-Objekt einfügen, damit Sie es bei Bedarf umbenennen können.
In Ihrem Prep-Datencode zum Beispiel:
%Vor%In Ihrem glänzenden Code:
%Vor%Denken Sie daran, Ihre .rds-Datei bei der Bereitstellung in Ihr App-Verzeichnis zu kopieren . Wir verwenden ein Datenverzeichnis / myapp / data em> und dann wird datei.path für die Geschäftsdatei in unserem glänzenden Code in "./data" geändert.
global.R
Wir haben unsere readRDS
Aufrufe in unsere Daten in dieser globalen Datei geladen (statt in Server.R vor shinyServer()
Aufruf), so dass sie einmal ausgeführt wird und für alle Sitzungen mit den hinzugefügten verfügbar ist Bonus kann es von ui.R
gesehen werden.
Siehe Lösungsumfang für R Shiny.
Im Voraus würfeln und schneiden
Die täglichen Standardberichte verwenden die neuesten Daten. Also mache ich ein kleines latest.dt
in meinem global.R einer kleineren Teilmenge meiner Daten. Die Zielseite mit den neuesten Diagrammen funktioniert mit diesem kleineren Datensatz , um schnellere Diagramme zu erhalten.
Die Registerkarte für benutzerdefinierte Daten, die full.dt
verwendet, befindet sich auf einer separaten Registerkarte. Es ist langsamer, aber in diesem Stadium ist der Benutzer geduldiger und denkt daran, welche Daten und andere Parameter zu wählen sind.
Diese Teilmengenidee kann Ihnen helfen.
Wäre interessiert, was andere (mit anspruchsvolleren Datensätzen) versucht haben!