10.Ders bonus soru yanıtı


Fonskiyonun assert ile oluşturulması


set.seed(358)
bonus1 <- data.frame(
   ogrenci = c("ARIF ARSLAN","ASLI YORUK","ATA CANTURK DOGRUL",
               "AYBUKE DOGAC","AYSE TUNA","BURCAK GONUL AYDIN",
               "CAGATAY COSKUN","EMRE GONEN","FEYZI GUNES",
               "FURKAN ATMACA", "HARUN DILEK","KORKUT KOCAK",
               "MEHMET YILMAZ","RAMAZAN SOYUK",
               "SEMIH TOPUZ","SINEM COSKUN"),
   ara_sinav = sample(0:100, 16))
head(bonus1)
##              ogrenci ara_sinav
## 1        ARIF ARSLAN        87
## 2         ASLI YORUK        45
## 3 ATA CANTURK DOGRUL        12
## 4       AYBUKE DOGAC        91
## 5          AYSE TUNA        66
## 6 BURCAK GONUL AYDIN        65
secim <- function(veri, n = 4, w) {
   assert(is.data.frame(veri) == T, ncol(veri) <= 2)
   sample_n(veri, n, weight = w)
}

secim(bonus1, w = bonus1$ara_sinav)
##              ogrenci ara_sinav
## 1        SEMIH TOPUZ        79
## 2 BURCAK GONUL AYDIN        65
## 3       SINEM COSKUN        71
## 4         EMRE GONEN        33


Fonksiyonun if ile oluşturulması ve stop ile hata mesajı yerleştirilmesi


secim_2 <- function(x, n = 4, w) {
   if (is.data.frame(x) == FALSE | ncol(x) > 2) {
      stop(
         "Veri seti haricinde bir tür girildi veya girilen veri setinin ikiden fazla sütunu var"
      )
   }
   return(sample_n(x, n, weight = w))
}

secim_2(bonus1, w = bonus1$ara_sinav)
##              ogrenci ara_sinav
## 1        ARIF ARSLAN        87
## 2       SINEM COSKUN        71
## 3       AYBUKE DOGAC        91
## 4 BURCAK GONUL AYDIN        65


stop ile yazılan hata mesajının test edilmesi


set.seed(42)
bonus2 <- data.frame(
   ogrenci = c("ARIF ARSLAN","ASLI YORUK","ATA CANTURK DOGRUL",
               "AYBUKE DOGAC","AYSE TUNA","BURCAK GONUL AYDIN",
               "CAGATAY COSKUN","EMRE GONEN","FEYZI GUNES",
               "FURKAN ATMACA", "HARUN DILEK","KORKUT KOCAK",
               "MEHMET YILMAZ","RAMAZAN SOYUK",
               "SEMIH TOPUZ","SINEM COSKUN"),
   vize = sample(0:100, 16),
   final= sample(0:100, 16))
head(bonus2)
##              ogrenci vize final
## 1        ARIF ARSLAN   48    35
## 2         ASLI YORUK   64    94
## 3 ATA CANTURK DOGRUL   24     4
## 4       AYBUKE DOGAC   73    83
## 5          AYSE TUNA   17    33
## 6 BURCAK GONUL AYDIN  100    91
secim_2(bonus2, w = bonus1$vize)
## Error in secim_2(bonus2, w = bonus1$vize): Veri seti haricinde bir tür girildi veya girilen veri setinin ikiden fazla sütunu var