Sadece 4GB RAM (Windows 10 çalıştıran, bu yüzden yaklaşık 2 veya daha gerçekçi 1GB olun) ayırma konusunda gerçekten dikkatli olmak zorunda kaldım.
Data.table'ı neredeyse tamamen kullanıyorum.
'Fread' işlevi, içe aktarma sırasında bilgileri alan adlarına göre alt kümeye almanızı sağlar; yalnızca başlangıçta gerçekten gerekli olan alanları içe aktarın. Temel R okumasını kullanıyorsanız, içe aktardıktan hemen sonra sahte sütunları sıfırlayın.
As 42- anlaşılacağı, ben sonra hemen bilgi aktardıktan sonra sütunların içinde alt küme olacak hiç mümkün olduğunca.
Sık sık, artık gerekli olmadıkça nesneleri ortamdan rm (), örneğin başka bir şey alt kümesi için onları kullandıktan sonra sonraki satırda ve gc () çağırmak.
data.table'dan 'fread' ve 'fwrite' temel R okuma ve yazma işlemlerine kıyasla çok hızlı olabilir .
As kpierce8 ortamının dışarı, ben hemen hemen her zaman fwrite şeyi önerir ve hatta geçmek için minik binlerce dosya bin / yüzlerce tekrar içeri Fread. Bu sadece çevreyi 'temiz' tutmakla kalmaz aynı zamanda bellek tahsisini de düşük tutar, ancak büyük olasılıkla kullanılabilir RAM eksikliğinden dolayı, R bilgisayarımda sık sık çökme eğilimi gösterir; gerçekten sık. Kod çeşitli aşamalarda ilerledikçe sürücünün kendisinde yedeklenen bilgilere sahip olmak, çökerse en baştan başlamak zorunda kalmamam anlamına gelir.
2017 itibariyle, en hızlı SSD'lerin M2 portu üzerinden saniyede birkaç GB çalıştığını düşünüyorum. Birincil diskim olarak kullandığım gerçekten temel bir 50GB Kingston V300 (550MB / s) SSD'ye sahibim (üzerinde Windows ve R var). Tüm toplu bilgileri ucuz bir 500GB WD tablasında saklıyorum. Üzerinde çalıştığımda veri setlerini SSD'ye taşıyorum. Bu, 'korkma' ve 'fwrite' ile birlikte her şey harika çalışıyor. Ben 'ff' kullanmayı denedim ama eski tercih ederim. 4K okuma / yazma hızları bununla ilgili sorunlar yaratabilir; SSD'den tabağa çeyrek milyon 1k dosya (250MBs değerinde) yedeklemek saatler sürebilir. Bildiğim kadarıyla, 'chunkification' sürecini otomatik olarak optimize edebilen henüz bir R paketi yok; örneğin bir kullanıcının ne kadar RAM'e sahip olduğuna bakın, bağlı olan RAM / tüm sürücülerin okuma / yazma hızlarını test edin ve ardından en uygun 'tıklatma' protokolünü önerin. Bu, bazı önemli iş akışı iyileştirmeleri / kaynak optimizasyonları üretebilir; örneğin ram için ... MB için bölmek -> SSD için - MB için bölmek -> bölmek için ... bölmedeki MB -> bölmek için ... bantta MB. Çalışmak için daha gerçekçi bir ölçü çubuğu vermek için veri kümelerini önceden örnekleyebilir.
R'de üzerinde çalıştığım birçok sorun, kombinasyon ve permütasyon çiftleri, üçlüler vb.'nin oluşturulmasını içerir, bu da sınırlı RAM'in daha az bir sınırda olmasını sağlar çünkü genellikle en azından bir noktada genişlerler. Bu , daha sonra temizlemeye çalışmak yerine, kendileriyle başlayacak olan bilgi miktarının aksine kaliteye ve başlamak için bilgileri hazırlamaya yönelik işlem sırasına çok fazla dikkat çekti. en basit operasyon ve karmaşıklığı arttırmak); örneğin altküme, birleştirme / birleştirme, ardından kombinasyonlar / permütasyonlar vb.
Baz R okuma ve yazma bazı durumlarda kullanmanın bazı yararları var gibi görünüyor. Örneğin, 'fread' içindeki hata tespiti o kadar iyidir ki, temizlemeye başlamak için R'ye gerçekten dağınık bilgi almaya çalışmak zor olabilir. Linux kullanıyorsanız Base R de çok daha kolay görünüyor. Base R Linux'ta iyi çalışıyor gibi görünüyor, Windows 10 ~ 20GB disk alanı kullanıyor ancak Ubuntu'nun sadece birkaç GB'ye ihtiyacı var, Ubuntu ile ihtiyaç duyulan RAM biraz daha düşük. Ancak (L) Ubuntu'ya üçüncü taraf paketleri yüklerken büyük miktarlarda uyarı ve hata fark ettim. (L) Ubuntu veya Linux ile diğer hisse senedi dağıtımlarından çok uzakta sürüklenmenizi tavsiye etmem, çünkü süreci neredeyse anlamsız hale getiren çok fazla genel uyumluluğu kaybedebilirsiniz (bence 'birlik' 2017'den itibaren Ubuntu'da iptal edilecek ).
Umarım bunlardan bazıları başkalarına yardım edebilir.