Saya memiliki 2 skrip yang melakukan hal yang persis sama.
Tetapi satu skrip menghasilkan 3 file RData yang berbobot 82,7 KB, dan skrip lainnya membuat 3 file RData yang berbobot 120 KB.
yang pertama tanpa paralel:
library("plyr")
ddply(.data = iris,
.variables = "Species",
##.parallel=TRUE,##Without parallel
.fun = function(SpeciesData){
#Create Simple Model -------------------------------------------------------------
Model <- lm(formula = "Sepal.Length~Sepal.Width+Petal.Length+Petal.Width",data = SpeciesData)
#Save The Model -------------------------------------------------------------
save(Model,
compress = FALSE,
file = gsub(x = "Species.RData",
pattern = "Species",
replacement = unique(SpeciesData$Species)))
})
Yang kedua adalah dengan paralel:
library("plyr")
doSNOW::registerDoSNOW(cl<-snow::makeCluster(3))
ddply(.data = iris,
.variables = "Species",
.parallel=TRUE,##With parallel
.fun = function(SpeciesData){
#Create Simple Model -------------------------------------------------------------
Model <- lm(formula = "Sepal.Length~Sepal.Width+Petal.Length+Petal.Width",data = SpeciesData)
#Save The Model -------------------------------------------------------------
save(Model,
compress = FALSE,
file = gsub(x = "Species.RData",
pattern = "Species",
replacement = unique(SpeciesData$Species)))
})
snow::stopCluster(cl)
skrip kedua membuat file yang beratnya 42% lebih banyak.
Bagaimana saya bisa menyimpan file secara paralel tanpa secara otomatis meningkatkan ukuran file?
r lang lock file
dan setelah 5 detik Anda akan menemukan paket yang diinginkan cran.r-project.org/web/packages/filelock/filelock.pdfJawaban:
Seperti yang disebutkan lainnya, mungkin ada sejumlah kecil informasi tentang lingkungan yang disimpan dalam file atau serupa yang Anda mungkin tidak akan melihat kecuali bahwa file tersebut sangat kecil.
Jika Anda hanya tertarik pada ukuran file, cobalah menyimpan model ke dalam satu daftar dan kemudian simpan ke dalam satu file.
ddply
hanya dapat menangani data.frame sebagai hasil dari fungsi, jadi kita harus menggunakannyadlply
sebagai gantinya untuk menyimpan hasil dalam daftar. Melakukan ini disimpan hanya ke satu file yang 60k.Berikut ini contoh dari apa yang saya bicarakan:
sumber
Saya belum pernah menggunakan ddply untuk memparalelkan objek penyimpanan, jadi saya kira file menjadi jauh lebih besar karena ketika Anda menyimpan objek model, ia juga membawa beberapa informasi tentang lingkungan tempat penyimpanannya.
Jadi menggunakan kode ddply Anda di atas, ukuran yang saya miliki adalah:
Ada dua opsi, satu adalah menggunakan purrr / furrr:
Atau menggunakan saveRDS (dan ddply?) Karena Anda hanya memiliki satu objek untuk disimpan:
Anda akan melakukan
readRDS
alih - alihload
mendapatkan file:Kita dapat melihat koefisien dibandingkan dengan objek rda:
Objek tidak identik karena bagian lingkungan, tetapi dalam hal prediksi atau hal-hal lain yang biasa kita gunakan untuk itu, ia bekerja:
sumber