12.Ders ödevleri


1. Boyutları kullanıcı tarafından belirlenen ve elemanları satır ve sütun indeksleri çarpımına eşit olan matrisi oluşturma fonksiyonu

matris_olustur <- function() {
   m <- as.integer(readline(prompt = "Kaç satırı olsun? :"))
   n <- as.integer(readline(prompt = "Kaç sütunu olsun? :"))
   m1 <- matrix(0, nrow = m, ncol = n)
   for (i in 1:nrow(m1)) {
      for (j in 1:ncol(m1)) {
         m1[i, j] <- i * j
      }
   }
   if (m < 11 & n < 11) {
      m1
   } else{
      head(m1, 10)
   }
}


2. İstenilen sayıda veri seti oluşturan fonksiyona uyarı mesajı eklenmesi

veri_seti_olustur <- function(v_say = 1,
                              satirsay = c(1),
                              sutunsay = c(1)) {
   v_list <- list()
   for (j in 1:v_say) {
      sutun <- sutunsay[j]
      satir <- satirsay[j]
      veri_seti <- data.frame(matrix(0, ncol = sutun, nrow = satir))
      for (i in 1:ncol(veri_seti)) {
         veri_seti[, i] <- round(rnorm(nrow(veri_seti)), 2)
         
      }
      if (v_say != length(satirsay) |
          v_say != length(sutunsay) | length(satirsay) != length(sutunsay)) {
         stop(
            "Veri setlerinin sayısı, satır adedi ve sütun adedi birbirine eşit olmalıdır. Girdiğiniz argümanları tekrar kontrol edin."
         )
      }
      v_list[[j]] <- veri_seti
      writexl::write_xlsx(v_list[[j]],
                          path = paste("veri_", j, ".xlsx", sep = ""))
   }
   head(v_list, 1)
}

veri_seti_olustur(
   v_say = 5,
   satirsay = c(5, 10, 15, 20, 25),
   sutunsay = c(10, 20, 30, 40, 50)
)
## [[1]]
##      X1    X2    X3    X4    X5    X6    X7   X8    X9   X10
## 1 -1.31 -0.06  0.73  2.25  0.92 -0.78 -0.10 1.68 -1.91  0.82
## 2 -0.68 -1.10 -0.74  0.14 -0.40  1.50 -0.65 1.38 -2.28 -1.27
## 3 -1.02 -0.28 -0.14 -1.37 -1.52 -0.51 -2.16 1.08 -0.49 -1.18
## 4  0.40 -0.05 -0.24 -1.68  1.98  0.38  0.64 0.67  0.27  1.34
## 5 -0.84 -0.52  1.19 -0.32  0.60  1.69 -0.85 1.48 -0.01 -0.72

2.1 Hata mesajının test edilmesi 1. durum

veri_seti_olustur(
   v_say = 4,
   satirsay = c(5, 10, 15, 20, 25),
   sutunsay = c(10, 20, 30, 40, 50)
)
## Error in veri_seti_olustur(v_say = 4, satirsay = c(5, 10, 15, 20, 25), : Veri setlerinin sayısı, satır adedi ve sütun adedi birbirine eşit olmalıdır. Girdiğiniz argümanları tekrar kontrol edin.

2.2 Hata mesajının test edilmesi 2. durum

veri_seti_olustur(
   v_say = 5,
   satirsay = c(5, 10, 15, 20),
   sutunsay = c(10, 20, 30, 40, 50)
)
## Error in veri_seti_olustur(v_say = 5, satirsay = c(5, 10, 15, 20), sutunsay = c(10, : Veri setlerinin sayısı, satır adedi ve sütun adedi birbirine eşit olmalıdır. Girdiğiniz argümanları tekrar kontrol edin.

2.3. Hata mesajının test edilmesi 3. durum

veri_seti_olustur(
   v_say = 5,
   satirsay = c(5, 10, 15, 20, 25),
   sutunsay = c(10, 20, 30, 40)
)
## Error in veri_seti_olustur(v_say = 5, satirsay = c(5, 10, 15, 20, 25), : Veri setlerinin sayısı, satır adedi ve sütun adedi birbirine eşit olmalıdır. Girdiğiniz argümanları tekrar kontrol edin.


3. Fibonacci serisi

options(scipen = 999) #bilimsel gösterimi kapatma
fibonacci <- rep(1, 2)
for (v in 3:100) {
   fibonacci[v] <- fibonacci[v - 1] + fibonacci[v - 2]
}
fibonacci
##   [1]                     1                     1                     2
##   [4]                     3                     5                     8
##   [7]                    13                    21                    34
##  [10]                    55                    89                   144
##  [13]                   233                   377                   610
##  [16]                   987                  1597                  2584
##  [19]                  4181                  6765                 10946
##  [22]                 17711                 28657                 46368
##  [25]                 75025                121393                196418
##  [28]                317811                514229                832040
##  [31]               1346269               2178309               3524578
##  [34]               5702887               9227465              14930352
##  [37]              24157817              39088169              63245986
##  [40]             102334155             165580141             267914296
##  [43]             433494437             701408733            1134903170
##  [46]            1836311903            2971215073            4807526976
##  [49]            7778742049           12586269025           20365011074
##  [52]           32951280099           53316291173           86267571272
##  [55]          139583862445          225851433717          365435296162
##  [58]          591286729879          956722026041         1548008755920
##  [61]         2504730781961         4052739537881         6557470319842
##  [64]        10610209857723        17167680177565        27777890035288
##  [67]        44945570212853        72723460248141       117669030460994
##  [70]       190392490709135       308061521170129       498454011879264
##  [73]       806515533049393      1304969544928657      2111485077978050
##  [76]      3416454622906707      5527939700884757      8944394323791464
##  [79]     14472334024676220     23416728348467684     37889062373143904
##  [82]     61305790721611584     99194853094755488    160500643816367072
##  [85]    259695496911122560    420196140727489664    679891637638612224
##  [88]   1100087778366101888   1779979416004713984   2880067194370816000
##  [91]   4660046610375530496   7540113804746346496  12200160415121876992
##  [94]  19740274219868225536  31940434634990100480  51680708854858326016
##  [97]  83621143489848426496 135301852344706760704 218922995834555203584
## [100] 354224848179261997066


4. Örnek veri setinde i. satırda negatif sayı yok ise çıktıda i. satirin ortalaması….dir yazsin. Eğer veri setinde herhangi bir satırda negatif sayı var ise satir i negatif sayı bulunmaktadir. Veri setindeki satırlardaki toplam negatif sayı toplamı üçü geçerse çıktıda cok sayida negatif sayi yazsın ve döngü çalışmayı durdursun.

# Örnek veri setinin oluşturulması

set.seed(1786)
ornek <- exp(matrix(rnorm(2000), nrow = 100))
index1.temp <- sample(1:100, 10)
index2.temp <- sample(1:20, 10)
for (i in 1:10) {
   ornek[index1.temp[i], index2.temp[i]] <- -1
}
for (i in 1:nrow(ornek))
{
   ifelse(ornek[i,] > 0, 
          print(paste(
             i, ". satırın ortalaması ", mean(ornek[i,]), "dir."
          )),
          ifelse(ornek[i,] < 0, print(
   paste(i, ". satırda negatif sayı bulunmaktadır.")
),
                 ifelse(apply(ornek, 1, function(row) any(row < 0))> 3, print(
   paste("Çok sayıda negatif sayı bulunmaktadır.")
), no = F)))
}
## [1] "1 . satırın ortalaması  1.81024640410365 dir."
## [1] "2 . satırın ortalaması  1.38518610357355 dir."
## [1] "3 . satırın ortalaması  1.91306477718819 dir."
## [1] "4 . satırın ortalaması  1.4112379414075 dir."
## [1] "5 . satırın ortalaması  1.4449874985066 dir."
## [1] "6 . satırın ortalaması  1.45095623366252 dir."
## [1] "7 . satırın ortalaması  1.28395242730511 dir."
## [1] "8 . satırın ortalaması  1.09256285552594 dir."
## [1] "9 . satırın ortalaması  1.42368154628106 dir."
## [1] "10 . satırın ortalaması  1.87463142687726 dir."
## [1] "10 . satırda negatif sayı bulunmaktadır."
## [1] "11 . satırın ortalaması  1.63867357063309 dir."
## [1] "12 . satırın ortalaması  1.34365172029771 dir."
## [1] "12 . satırda negatif sayı bulunmaktadır."
## [1] "13 . satırın ortalaması  1.47012239341985 dir."
## [1] "14 . satırın ortalaması  1.68760963291761 dir."
## [1] "15 . satırın ortalaması  1.51554665095691 dir."
## [1] "16 . satırın ortalaması  1.99518274468864 dir."
## [1] "17 . satırın ortalaması  1.47942292790106 dir."
## [1] "18 . satırın ortalaması  1.4444947260594 dir."
## [1] "19 . satırın ortalaması  1.54378752827146 dir."
## [1] "20 . satırın ortalaması  2.17983862702061 dir."
## [1] "21 . satırın ortalaması  1.48707990280766 dir."
## [1] "22 . satırın ortalaması  2.10918427665028 dir."
## [1] "23 . satırın ortalaması  2.53701879215026 dir."
## [1] "24 . satırın ortalaması  2.18838278266378 dir."
## [1] "24 . satırda negatif sayı bulunmaktadır."
## [1] "25 . satırın ortalaması  1.44711057713537 dir."
## [1] "25 . satırda negatif sayı bulunmaktadır."
## [1] "26 . satırın ortalaması  0.981573869823853 dir."
## [1] "27 . satırın ortalaması  2.10120070726688 dir."
## [1] "28 . satırın ortalaması  1.58708489312329 dir."
## [1] "29 . satırın ortalaması  2.07934105483056 dir."
## [1] "30 . satırın ortalaması  1.62838414992845 dir."
## [1] "31 . satırın ortalaması  1.06213338682266 dir."
## [1] "32 . satırın ortalaması  1.30176914432271 dir."
## [1] "33 . satırın ortalaması  1.22716566563699 dir."
## [1] "34 . satırın ortalaması  1.68089750840266 dir."
## [1] "35 . satırın ortalaması  2.04330971448464 dir."
## [1] "36 . satırın ortalaması  1.62042716634191 dir."
## [1] "37 . satırın ortalaması  1.49511549814556 dir."
## [1] "38 . satırın ortalaması  1.42134300969693 dir."
## [1] "38 . satırda negatif sayı bulunmaktadır."
## [1] "39 . satırın ortalaması  1.64957267061729 dir."
## [1] "40 . satırın ortalaması  1.62455677269478 dir."
## [1] "40 . satırda negatif sayı bulunmaktadır."
## [1] "41 . satırın ortalaması  1.61087414481598 dir."
## [1] "42 . satırın ortalaması  2.51292782080857 dir."
## [1] "43 . satırın ortalaması  1.29253831341951 dir."
## [1] "44 . satırın ortalaması  0.995338317972212 dir."
## [1] "45 . satırın ortalaması  1.06319606969695 dir."
## [1] "46 . satırın ortalaması  2.08723014108201 dir."
## [1] "47 . satırın ortalaması  1.63838098483115 dir."
## [1] "48 . satırın ortalaması  1.58748051253287 dir."
## [1] "49 . satırın ortalaması  1.36039204193038 dir."
## [1] "50 . satırın ortalaması  2.5030812334855 dir."
## [1] "51 . satırın ortalaması  1.72406515135536 dir."
## [1] "51 . satırda negatif sayı bulunmaktadır."
## [1] "52 . satırın ortalaması  1.1701846988099 dir."
## [1] "53 . satırın ortalaması  1.39932665703517 dir."
## [1] "54 . satırın ortalaması  0.851813922412085 dir."
## [1] "55 . satırın ortalaması  1.38874171912631 dir."
## [1] "56 . satırın ortalaması  1.28819137534643 dir."
## [1] "57 . satırın ortalaması  2.40583121888184 dir."
## [1] "58 . satırın ortalaması  0.954909626512 dir."
## [1] "59 . satırın ortalaması  1.37212622963709 dir."
## [1] "60 . satırın ortalaması  1.38257148153171 dir."
## [1] "61 . satırın ortalaması  1.13360242378072 dir."
## [1] "62 . satırın ortalaması  0.710679121145175 dir."
## [1] "63 . satırın ortalaması  1.01854602443719 dir."
## [1] "64 . satırın ortalaması  1.03714525502581 dir."
## [1] "64 . satırda negatif sayı bulunmaktadır."
## [1] "65 . satırın ortalaması  1.15965812704672 dir."
## [1] "66 . satırın ortalaması  0.842555588739729 dir."
## [1] "67 . satırın ortalaması  1.35084607269106 dir."
## [1] "68 . satırın ortalaması  1.14463972482843 dir."
## [1] "69 . satırın ortalaması  1.31510707964177 dir."
## [1] "70 . satırın ortalaması  1.60246658326134 dir."
## [1] "71 . satırın ortalaması  1.91370003124893 dir."
## [1] "72 . satırın ortalaması  2.17726089691906 dir."
## [1] "73 . satırın ortalaması  1.1509167872398 dir."
## [1] "74 . satırın ortalaması  3.37881346599407 dir."
## [1] "75 . satırın ortalaması  1.4458712001827 dir."
## [1] "76 . satırın ortalaması  1.65784983950186 dir."
## [1] "77 . satırın ortalaması  1.11154005692112 dir."
## [1] "78 . satırın ortalaması  1.66369767927207 dir."
## [1] "79 . satırın ortalaması  1.3726424347633 dir."
## [1] "80 . satırın ortalaması  1.45540060332781 dir."
## [1] "81 . satırın ortalaması  1.1547741826877 dir."
## [1] "82 . satırın ortalaması  3.34868667286079 dir."
## [1] "83 . satırın ortalaması  2.63518520261191 dir."
## [1] "84 . satırın ortalaması  1.35479992704511 dir."
## [1] "85 . satırın ortalaması  1.95680972834867 dir."
## [1] "86 . satırın ortalaması  2.06874099591242 dir."
## [1] "86 . satırda negatif sayı bulunmaktadır."
## [1] "87 . satırın ortalaması  1.45020821996795 dir."
## [1] "88 . satırın ortalaması  1.15091491124661 dir."
## [1] "89 . satırın ortalaması  1.25524639987064 dir."
## [1] "90 . satırın ortalaması  0.763787021104584 dir."
## [1] "91 . satırın ortalaması  1.29539957747794 dir."
## [1] "92 . satırın ortalaması  0.896540708641842 dir."
## [1] "92 . satırda negatif sayı bulunmaktadır."
## [1] "93 . satırın ortalaması  1.23735048852641 dir."
## [1] "94 . satırın ortalaması  2.15189363654345 dir."
## [1] "95 . satırın ortalaması  1.4852096703456 dir."
## [1] "96 . satırın ortalaması  1.56903650889034 dir."
## [1] "97 . satırın ortalaması  1.74906359142209 dir."
## [1] "98 . satırın ortalaması  2.91382990626373 dir."
## [1] "99 . satırın ortalaması  1.32444388929016 dir."
## [1] "100 . satırın ortalaması  1.72039519136943 dir."
# next ve break ekleyince çalıştırılamadı.


5. Çeşitli Şekiller

for(i in c(1:5))
   cat(paste0(strrep(" ", 5 - i), strrep("* ", i), "\n")
   )
##     * 
##    * * 
##   * * * 
##  * * * * 
## * * * * *
for(i in c(1:5, 4:1))
   cat(paste0(strrep(" ", 5 - i), strrep("* ", i), "\n")
   )
##     * 
##    * * 
##   * * * 
##  * * * * 
## * * * * * 
##  * * * * 
##   * * * 
##    * * 
##     *
for(i in rep(5, 5))
   cat(paste0(strrep(" ", 5 - i), strrep("* ", i), "\n")
   )
## * * * * * 
## * * * * * 
## * * * * * 
## * * * * * 
## * * * * *
for(i in rep(7, 7))
   cat(paste0(strrep(" ", 7 - i), strrep("* ", i), "\n")
   )
## * * * * * * * 
## * * * * * * * 
## * * * * * * * 
## * * * * * * * 
## * * * * * * * 
## * * * * * * * 
## * * * * * * *
for(i in rep(10, 4))
   cat(paste0(strrep(" ", 10 - i), strrep("* ", i), "\n")
   )
## * * * * * * * * * * 
## * * * * * * * * * * 
## * * * * * * * * * * 
## * * * * * * * * * *
for(i in c(1:6, 4:9, 7:12, 10:15, rep(3, 5)))
   cat(paste0(strrep(" ", 15 - i), strrep("* ", i), "\n"))
##               * 
##              * * 
##             * * * 
##            * * * * 
##           * * * * * 
##          * * * * * * 
##            * * * * 
##           * * * * * 
##          * * * * * * 
##         * * * * * * * 
##        * * * * * * * * 
##       * * * * * * * * * 
##         * * * * * * * 
##        * * * * * * * * 
##       * * * * * * * * * 
##      * * * * * * * * * * 
##     * * * * * * * * * * * 
##    * * * * * * * * * * * * 
##      * * * * * * * * * * 
##     * * * * * * * * * * * 
##    * * * * * * * * * * * * 
##   * * * * * * * * * * * * * 
##  * * * * * * * * * * * * * * 
## * * * * * * * * * * * * * * * 
##             * * * 
##             * * * 
##             * * * 
##             * * * 
##             * * *
print("***Herkese Mutlu Yıllar***")
## [1] "***Herkese Mutlu Yıllar***"