BaşlayınÜcretsiz Başlayın

parSapply() kullanma

Daha önce şu oyunu oynamıştık:

  • Başlat: total = 0.
  • Tek bir zar at ve total'a ekle.
  • total çiftse, total'ı sıfıra çek.
  • total 10'dan büyükse oyun biter.

Oyun play() fonksiyonu ile simüle edilebilir:

play <- function() {
  total <- no_of_rolls <- 0
  while(total < 10) {
    total <- total + sample(1:6, 1)

    # Eğer çiftse. 0'a sıfırla
    if(total %% 2 == 0) total <- 0 
    no_of_rolls <- no_of_rolls + 1
  }
  no_of_rolls
}

Oyunu 100 kez simüle etmek için bir for döngüsü veya sapply() kullanabiliriz:

res <- sapply(1:100, function(i) play())

Bu paralel çalıştırma için mükemmel!

Fonksiyonları bir kümede kullanılabilir yapmak için clusterExport() fonksiyonunu kullanırsın. Bu, bir küme ve fonksiyonun adını içeren bir dize alır.

clusterExport(cl, "some_function")

Bu egzersiz

Verimli R Kodu Yazma

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

play() fonksiyonu çalışma alanında tanımlı.

  • makeCluster() kullanarak bir küme oluştur; kullanılan çekirdek sayısını 2 olarak ayarla. Sonucu cl olarak sakla.
  • play() fonksiyonunu kümeye aktar.
  • Yukarıdaki sapply() fonksiyonunu parSapply() olarak yeniden yaz.
  • stopCluster() kullanarak kümeyi durdur.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

library("parallel")
# Create a cluster via makeCluster (2 cores)
cl <- ___

# Export the play() function to the cluster
___

# Re-write sapply as parSapply
res <- sapply(1:100, function(i) play())

# Stop the cluster
___
Kodu Düzenle ve Çalıştır