Dengan hanya 4GB RAM (menjalankan Windows 10, jadi buatlah sekitar 2 atau lebih 1GB realistis) Saya harus benar-benar berhati-hati dengan alokasi.
Saya menggunakan data.tabel hampir secara eksklusif.
Fungsi 'ketakutan' memungkinkan Anda untuk mengelompokkan informasi menurut nama bidang saat impor; hanya mengimpor bidang yang benar-benar diperlukan untuk memulai. Jika Anda menggunakan basis R baca, null kolom palsu segera setelah impor.
Sebagai 42- disarankan oleh , jika memungkinkan saya kemudian akan mengelompokkan dalam kolom segera setelah mengimpor informasi.
Saya sering rm () objek dari lingkungan segera setelah mereka tidak lagi diperlukan, misalnya pada baris berikutnya setelah menggunakannya untuk mengelompokkan sesuatu yang lain, dan memanggil gc ().
'fread' dan 'fwrite' dari data.table bisa sangat cepat dibandingkan dengan base R membaca dan menulis.
Sebagai kpierce8 disarankan oleh , saya hampir selalu menulis semuanya dari lingkungan dan membuatnya takut, bahkan dengan ribuan / ratusan ribu file kecil yang harus dilalui. Ini tidak hanya menjaga lingkungan tetap 'bersih' dan membuat alokasi memori rendah tetapi, mungkin karena kurangnya RAM yang tersedia, R memiliki kecenderungan untuk sering crash di komputer saya; sangat sering. Memiliki informasi yang dicadangkan di drive itu sendiri ketika kode berlangsung melalui berbagai tahapan berarti saya tidak harus mulai dari awal jika crash.
Pada 2017, saya pikir SSD tercepat berjalan sekitar beberapa GB per detik melalui port M2. Saya memiliki 50GB Kingston V300 (550MB / s) SSD yang benar-benar dasar yang saya gunakan sebagai disk utama saya (memiliki Windows dan R di atasnya). Saya menyimpan semua informasi massal di piring WD 500GB yang murah. Saya memindahkan set data ke SSD ketika saya mulai mengerjakannya. Ini, dikombinasikan dengan 'menakut-nakuti dan' menulis 'semuanya telah bekerja dengan baik. Saya sudah mencoba menggunakan 'ff' tetapi lebih suka yang pertama. Kecepatan baca / tulis 4K dapat menimbulkan masalah dengan ini; mencadangkan seperempat juta file 1k (senilai 250MB) dari SSD ke piring dapat berlangsung berjam-jam. Sejauh yang saya ketahui, belum ada paket R yang tersedia yang dapat secara otomatis mengoptimalkan proses 'chunkification'; mis. lihat berapa banyak RAM yang dimiliki pengguna, uji kecepatan baca / tulis RAM / semua drive yang terhubung dan kemudian sarankan protokol 'chunkification' yang optimal. Ini dapat menghasilkan beberapa peningkatan alur kerja yang signifikan / optimisasi sumber daya; misalnya membaginya menjadi ... MB untuk ram -> membaginya menjadi ... MB untuk SSD -> membaginya menjadi ... MB di piring -> membaginya menjadi ... MB pada kaset. Ini bisa mengambil sampel set data sebelumnya untuk memberikan tongkat pengukur yang lebih realistis untuk bekerja.
Banyak masalah yang saya kerjakan di R melibatkan pembentukan kombinasi dan permutasi pasangan, tiga kali lipat dll, yang hanya membuat memiliki keterbatasan RAM lebih dari batasan karena mereka akan setidaknya setidaknya secara eksponensial berkembang di beberapa titik. Ini telah membuat saya memusatkan banyak perhatian pada kualitas daripada kuantitas informasi yang masuk ke mereka untuk memulai, daripada mencoba untuk membersihkannya setelah itu, dan pada urutan operasi dalam menyiapkan informasi untuk memulai (dimulai dengan operasi paling sederhana dan menambah kompleksitas); misal subset, lalu gabung / gabung, lalu bentuk kombinasi / permutasi dll.
Tampaknya ada beberapa manfaat untuk menggunakan basis R membaca dan menulis dalam beberapa kasus. Misalnya, deteksi kesalahan dalam 'fread' sangat bagus sehingga sulit untuk mencoba mendapatkan informasi yang benar-benar berantakan ke R untuk memulai dengan membersihkannya. Basis R juga tampaknya jauh lebih mudah jika Anda menggunakan Linux. Basis R tampaknya berfungsi dengan baik di Linux, Windows 10 menggunakan ~ 20GB ruang disk sedangkan Ubuntu hanya membutuhkan beberapa GB, RAM yang dibutuhkan dengan Ubuntu sedikit lebih rendah. Tetapi saya telah memperhatikan sejumlah besar peringatan dan kesalahan saat menginstal paket pihak ketiga di (L) Ubuntu. Saya tidak akan merekomendasikan melayang terlalu jauh dari (L) Ubuntu atau distribusi saham lainnya dengan Linux karena Anda dapat kehilangan begitu banyak kompatibilitas secara keseluruhan sehingga prosesnya hampir tidak ada gunanya (saya pikir 'unity' akan dibatalkan di Ubuntu pada 2017 ).
Semoga beberapa dari itu dapat membantu orang lain.