foreach का उपयोग

R में पैरेलल प्रोग्रामिंग

Nabeel Imam

Data Scientist

एक नया लूप

R में नेटिव for लूप

numbers <- 1:1e6

sqroots <- rep(0, length(numbers))

for (i in 1:length(numbers)) {
  sqroots[i] <- sqrt(numbers[i])
}

foreach लूप

numbers <- 1:1e6

library(foreach)


sqroots <- foreach(i = numbers) %do% { sqrt(i) }
R में पैरेलल प्रोग्रामिंग

पैरलल लूप

numbers <- 1:1e6

sqroots <- foreach(i = numbers) %do% {
  sqrt(i)
}
cl <- makeCluster(4)


library(doParallel) registerDoParallel(cl)
sqroots <- foreach(i = numbers # पैरलल ऑपरेटर ) %dopar% { sqrt(i) }
stopCluster(cl)
R में पैरेलल प्रोग्रामिंग

टॉप इंजीनियरिंग यूनिवर्सिटीज़

print(uni_list)
 [1] "./uni_data/Argentina.csv"
 [2] "./uni_data/Australia.csv"
 [3] "./uni_data/Austria.csv"
 [4] "./uni_data/Azerbaijan.csv"
 [5] "./uni_data/Bahrain.csv"
 [6] "./uni_data/Bangladesh.csv"
 [7] "./uni_data/Belarus.csv"
 [8] "./uni_data/Belgium.csv"
 [9] "./uni_data/Bolivia.csv"
[10] "./uni_data/Bosnia and Herzegovina.csv"
...
cl <- makeCluster(4)

registerDoParallel(cl)
ls_df <- foreach(csv = uni_list) %dopar% { read.csv(csv) } stopCluster(cl)
R में पैरेलल प्रोग्रामिंग

foreach से परिणाम इकट्ठा करना

cl <- makeCluster(4)
registerDoParallel(cl)
ls_df <- foreach(csv = uni_list) %dopar% {
  read.csv(csv)
}
stopCluster(cl)
[[1]]
 location                  institution score
Argentina  Universidad de Buenos Aires  68.9
...
[[2]]
 location                     institution score
Australia  Australian National University  82.1
...
cl <- makeCluster(4)
registerDoParallel(cl)

df_uni <- foreach(csv = uni_list,
                 .combine = "rbind") %dopar% {
  read.csv(csv)
}
stopCluster(cl)
   location                     institution score
1 Argentina     Universidad de Buenos Aires  68.9
2 Argentina  Universidad Católica Argentina  33.3
3 Argentina     Universidad de Palermo (UP)  29.1
...
R में पैरेलल प्रोग्रामिंग

Read, filter, और combine

library(dplyr)

n_unis <- 3


# खाली लिस्ट ls_df <- list()
for (i in 1:length(uni_list)) { # पढ़ें, फ़िल्टर करें, खाली लिस्ट में जोड़ें ls_df[[i]] <- read.csv(uni_list[[i]]) %>% top_n(n_unis, total_score) }
# लिस्ट को एक में मिलाएँ combined_df <- Reduce("rbind", ls_df)
R में पैरेलल प्रोग्रामिंग

foreach सबसे बेहतर

n_unis <- 3


cl <- makeCluster(4) registerDoParallel(cl)
df_top3 <- foreach(csv = uni_list,
.packages = "dplyr",
.export = "n_unis",
.combine = "rbind") %dopar% { read.csv(csv) %>% top_n(n_unis, score) } stopCluster(cl)
 location                     institution score
Argentina     Universidad de Buenos Aires  68.9
Argentina  Universidad Católica Argentina  33.3
Argentina     Universidad de Palermo (UP)  29.1
Australia  Australian National University  82.1
Australia     The University of Melbourne  81.6
Australia        The University of Sydney  79.6
  Austria            University of Vienna  50.6
  Austria     Technische Universität Wien  45.7
...
R में पैरेलल प्रोग्रामिंग

अभ्यास करते हैं!

R में पैरेलल प्रोग्रामिंग

Preparing Video For Download...