2014-09-04 17 views
9

Kullanıcı girişlerini temel alan bir arama tablosundaki değerleri almak istediğim bir uygulama var. Referans tablosu, kullanıcı girdilerinin tüm farklı kombinasyonları için çok yavaş olacak bir hesaplamaya dayanan bir istatistiksel testtir. Bu nedenle, tüm olasılıklar için bir arama tablosu.Büyük veri dosyalarını içe ve içeri aktarmak Shiny

Ancak ... şu anda tablo yaklaşık 60 MB (.Rdata) veya 214 MB (.csv) biçimindedir ve olası kullanıcı girişlerini genişletirsek çok daha büyük olur. Verilerdeki önemli rakamların sayısını (3'e) azaltmış ve satır/sütun adlarını kaldırmıştım.

Açıkçası, arama tablosunu reaktif sunucu işlevinin dışında önceden yükleyebilirim, ancak yine de bu verilere yüklemek için iyi bir zaman yığını alır. Shiny'ta büyük miktarda veriyle uğraşmada herhangi bir ipucu var mı? Teşekkürler!

+0

'fread()' veya 'readRDS()' yi denediniz mi? Sizin için bir fark yaratıp yaratmadıklarını merak ediyorum. – jazzurro

+0

Eğer jazzurro'nun önerisi hala çok yavaşsa, bir veritabanı kullanmayı düşünebilirsiniz. mongodb, Rmongodb ile R ile iyi çalışır. Bu sayede sadece ihtiyacınız olanı arayabilir ve çok hızlı olmalıdır. –

+0

önerileriniz için teşekkürler, jazzurro ve jan. readRDS, tabloyu 25 MB'ye düşürür, böylece daha kolay yönetilebilir. İlk okuma hala çok yavaşsa, veritabanı seçeneklerine bakacağım. –

cevap

4

flaneuse, biz her durumda ama biz deneyler yapıyorlar küçük bir set ile çalışıyoruz: @jazzurro Yukarıda rds belirtildiği gibi bizim veri

için

  1. Kullanım rds ve Bunu nasıl yapacağını biliyorum, ama diğerleri için sözdizimi aşağıda.

    Biçim .rds Tek bir R nesnesini getirmenize izin verir, böylece gerekiyorsa yeniden adlandırabilirsiniz. Örneğin senin hazırlık veri kodu

    :

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

    senin parlak kodu:

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

    dağıtırken, uygulama dizinine içine verilerin .rds dosyayı kopyalamak unutmayın. Bir veri dizini /myapp/data kullanıyoruz ve daha sonra mağaza kodu için file.path parlak kodumuzda "./data" olarak değiştirildi.

  2. global.R

    Bunu bir kez çalıştırılır, böylece (shinyServer() çağrısından önce server.R içinde yerine) bu küresel dosyasında bizim verileri yüklemek için bizim readRDS aramaları yerleştirilir ve kullanılabilir olması Tüm oturumlar için, eklenen bonus ile ui.R tarafından görülebilir.

    R Shiny için bu scoping explanation'a bakın.

  3. parçalara ayırın

    standart günlük raporlar En son verileri kullanmak ayarlıyoruz. Bu yüzden global.R'imde küçük bir latest.dt veriyorum. Verilerimin daha küçük bir alt kümesi. En son grafiklerle açılış sayfası, daha hızlı grafikler almak için bu daha küçük veri seti ile çalışır.

    full.dt'u kullanan özel veri sekmesi daha sonra ayrı bir sekmede bulunur. Bu daha yavaş ama bu aşamada kullanıcı daha sabırlı ve hangi tarihlerin ve diğer parametrelerin seçileceğini düşünüyor.

    Bu alt simge size yardımcı olabilir.

Başkalarının (daha fazla talep gören veri kümeleriyle denediği) ilgisini çeker!

İlgili konular