Ogrenme Gunlugum- 09.12

Son 2 haftaki öğrenme günlüklerim devamı olarak bu hafta 09.12.2025 tarihinde işlediğimiz derse yönelik öğrenme günlüğümü hazırlamış bulunmaktayım.

İlk olarak ... yapısının fonksiyonları genişletmekte kullanıldığını öğrendim. Ayrıca bu üç notkanının cat, mean gibi çeşitli fonksiyonlarda da bu yapının olduğunu öğrendim. Bu kapsamda önceden oluşturulmuş bir fonksiyonun yeni bir fonksiyonda kullanılmasına katkı sağladığını anladım. Üç yıldızda ayrıca after... durumunun olmasında ise argümanın açıkça adlandırılması gerektiğini anladım (default tanımlar bazına özellikle dikkat edilmelidir/farklı işlev alabilir).

Ayrıca çoklu veri seti oluşturma yapısınıda ele almış bulunmaktayız. Bu yapının oluşturması ilk başlarda kafa karışıklığı yaşamama sebep olmakla birlikte sonunda tam yapıyı anladım. Bu süreçte ilk olarak fonksiyonla birlikte bir veri seti oluşturmakla birlikte veriyi bölmek amacıyla writexl:write_xlsx(setadı, paste("veriadı",i,.".xlsx,sep="") benzeri bir yapı oluşturulması gerektiğini anladım. Özellikle bu burada tekrar değerini dikkatli bir şekilde fonksyiona atamamız gerektiğini anladım. Kontrol etme sürecinde de kendim denerken +100 sayı yazmıştım, bu ise hatayı bulmamı zorlaştırdı. Ardından 1’e düşürünce hatamı buldum.

Birden çok set halinde görünmesi içinde yine benzer bir fonksiyon oluşturulması gerekmektedir. Örneğin `for(i in 1:tekrar){ set aktarımı writexl::write_xlsx(setadı[[i]],paste(),sep="")) yapısı oluşturulurken özellikle i atamasına dikkat ederek verdiğimiz miktarda sayıya kadar atama yapılması sağlanmalıdır. Ayrıca [[i]] yapısıyla birlikte ayrı sayıda dosya oluşturulması sağlanabilir.

Farklı satır sütun sayısı olutşurmada ise for kısmından önce function(tekrar=1,satir,sütun) ataması, set oluşturma kısmında matrix bölümüne nrow=satir[i],ncol=sütun[i] yapısı ekleyip, en son fonksiyonu çalıştırdığımız zamanda fonksiyon(tekrar= n,satir=değer1:değer2,sütun=değer1:değer2) bilgisinin atanması sağlanmalıdır. Böylece istenilen satır sütun süreci aktarımı yapılır. Rastgele sayı üretimi süreci için ise de veris seti üretimi yapısı için ise matrix(sample(değer aralığı1:değer aralıgı2, satir[i]*sütun[i],replace=TRUE, nrow=satir[i],ncol=sutn[i])) yapısının oluşturulması gerektiğini anladım.

Birden çok veriyi birlikte okumak için ise önceliklelist() ataması yapılması gerektiğini, ardından veriler[[i]] <- for(i in değeraralığı1:değeraraligi2){readxl:read_excel(paste("setin isminin başı_",i,".xlsx)),sep=""} yapısının oluşturması gerektiğini anladım. Özellikle bu süreç içerisinde sep="" ile boşluklarının okunmamasının sağlandığını anladım. Bu döngüyü fonksiyon olarakta ele alabiliriz. Bunun için yukarıdaki kısmı alarak sadece başına fonksiyonadı<-function(değişkenadı){ for..... mantığıyla birlikte yapabiliyoruz. Bununla birlikte for kısmında ise ise değeraralığı2 yerine fonksiyondaki değişken adımızı ekleyebildiğimizi öğrendim. Ayrıca return() fonksiyonuyla birlikte elde ettiğimiz nesneye dönüş yapısı kurabiliriz. Bu bize sırayla farklı nesneleri görmemize katkı sağlamaktadır. Büyük verilerde zorluk yaşatabilir.

Geometrik ortlama hesabını da ele almış bulunmaktayız. Bu hesaplama süreci psych paketindeki geometric.mean() fonksiyonuyla doğrudan ele alınabilmekle birlikte fonksiyonla birlikte de ele alabiliyoruz.

Benim bu derste dikkatimi çeken kısım stop("") fonksiyonu oldu. Bizler bir fonksiyon oluşturduğumuzda bu fonksiyon içerisinde de if ile bir koşul eklediğimizde eğer koşula uygun bir şart sağlayamıyorsak bir uyarı yazdırabiliriz. Bunun yanı sıra, prod() fonksiyonu ise birden çok çarpmanın yapılmasına katkı sağlayan bir fonksiyon olarak görülebilirmiştir. Eğer birden çok yolla hesaplamam yapıp her birinin sonucunu yazdırmak istiyorsak ise data.frame(a=,b=,c=) yapısıyla birlikte yazdırmaları yapmanın mantıklı olduğunu anladım. Veri esti oluşturulduktan sonra ise cat ile atamaları yapıp, return(invisible(dataseti) yapılması gerektiğini anladım.

Ayrıca bu ders kapsamında en sevdiğim yapırshiny yapıları oldu. Doğrudan hazır kod mantığında olduğunu ve analiz aracı olarak görebileceğimizi anladım. Gördüğümüz langtest te yaptığım denemelerde sürekli donma sorunu yaşasam da bunun genel olarak sunuculardan kaynaklı olduğunu anladım.

While kapsamında ise bir hata yapılması gerektiğinde sonsuz döngüye girilebileceğini anladım. While’da koşul eklemesi yapılmadır. Bu doğrultuda koşul doğru olduğu sürece çalışmaya devam eden bir yapı elde edilmetkedir. Örneğin, count <- 0 while(count <10){print(count) count <- count+1} yapısı kurulabilir. Sonsuz döngüde ise mesela i=12 while(i==12){print(i)} yapısı yapılabilir. Bunu denediğimde R’ı kitlemeyi başardım. Bunun yanı sıra, while içerisinde birden çok koşul atamasıda yapılabiliyormuş. Örneğin, while(z >= değer && z <=değer){set yapısı, if(....), else(...)} yapısı kurulabilirmiş (if else kısmında parantezlemeyi yanlış yazdığımı biliyorum, daha rahat anlayabilmek için yazdım).

Yakınsama olayına ek olarakta değindik. Bu kapsamda repeat() yapısını öğrendik. Repeat aracılığıyla başlangıçtan itibaren sonsuz bir döngü başlatıldığını anladım. Bu repeat döngüsünü ise break() ile düzenleyebiliriz/durdurabiliriz (if/elsete çalıştırmalı). Bu yapılar özellikle hata bulma sürecinde bizlere katkı sağlar diye düşünüyorum.

5.7 kapsamında yapılması istenen kod tekrarı denemesi

Deneme sürecimde ilk olarak geometric.mean() fonksiyonunu kullanabilmek için psych paketini aktif ettim. Ardından derste geometrik ortalama sürecinde negatif değerlerin sürece dahil edilemeyeceğinden bahsedilmişti. Buradan yola çıkarak fonksiyon oluşturma sürecinde if ile kontrol süreci hazırlayıp, ardından stop ile bir hata olması durumunda ne olacağını görmek istedim.

Veri seti uzunluğunu ele almak için ilk olarak n() ile çözüm yolu çok aradım ancak hep hata aldığımdan dolayı length() fonksiyonunu kullandım. Ardından doğrudan çarpım için ilk olarak tüm elemanların çarpımını ele almak için prod() fonksiyonunu ve n. inci dereceden kök için ^(1/verisayısı) yapısı oluşturdum. Ardından logaritmik hesaplama için ise exp() ile son hale dönüştürme, mean() ile ortalama alma, log() ile de logaritmik değişim yapısını oluşturdum. Ardından geometric.mean() fonksiyonuyla da son hesaplamayı yapıp data.frame ile ettiğim yapıları birleştirerek cat("") fonksiyonuyla ekrana bilgi yazdırmayı tamamladım.

Deneme sonucumda ise pozitif değerlerde kod çalıştı. Negatifi de koymak istedim ancak knit ederken “Execution halted” uyarısı verdirtti.

library(psych)

geo_ort <- function(deger){
  if(any(deger <= 0)){
    stop("Deger ataması sıfır veya eksi deger olamaz.")
  }
  verisay <- length(deger)
  dogrudan_carp <- prod(deger)^(1/verisay)
  log_carp <- exp(mean(log(deger)))
  psych_carp <- geometric.mean(deger)
  degerler <- data.frame(
    analiz_turu = c("dogruda_carpim", "logaritmik_hesap", "psychlı_hesap"),
    geomort = c(dogrudan_carp, log_carp, psych_carp),
    row.names = NULL
  )
  cat("Geometrik Ortalama Hesaplama Sonuçları (n =", verisay, ")\n")
  print(degerler)
  cat("\n")
  
  return(invisible(degerler))
}
geo_ortluk <- 90:174
geo_ort(geo_ortluk)
## Geometrik Ortalama Hesaplama Sonuçları (n = 85 )
##        analiz_turu geomort
## 1   dogruda_carpim 129.666
## 2 logaritmik_hesap 129.666
## 3    psychlı_hesap 129.666

##8.2’deki ödevler 8.2 kapsamıdaki sorulardan ilk ikisini derste yaptığımız için ek olarak buraya aktarmamış bulunmaktayım.

8.2.3 Sorusu

Soru kapsamında ilk olarak verilen set kodunu aktarmış bulunmaktayım.

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
 }
head(ornek,6)
##           [,1]      [,2]      [,3]      [,4]      [,5]      [,6]     [,7]
## [1,] 0.5549525 0.3247338 0.5236032 0.3821027 0.4187483 0.1588847 5.226161
## [2,] 0.5671734 1.2431592 0.8812069 2.6695443 0.6984453 1.0838792 1.079946
## [3,] 4.8068457 0.3449856 0.6079096 0.9194116 1.5361330 1.9082522 0.671977
## [4,] 1.3509234 2.3569582 0.1931423 4.0707377 0.3527276 2.3498825 1.198514
## [5,] 0.9012032 0.2310683 0.2317487 1.3809955 0.9168741 0.6237213 1.609403
## [6,] 1.2331483 1.1066056 0.3546027 0.3705946 0.9002303 0.2528151 3.337512
##           [,8]      [,9]     [,10]     [,11]     [,12]     [,13]     [,14]
## [1,] 2.6280057 1.2251526 0.4760966 5.2379018 1.4782655 1.3761338 1.0202608
## [2,] 2.2087385 0.5195551 0.3757409 0.9004808 0.7409205 2.0543842 0.3668661
## [3,] 1.5310016 0.6735007 2.2069776 0.5060078 0.7171477 1.2378655 0.3651527
## [4,] 2.5592899 1.8205257 1.2624052 0.1524106 0.3828322 1.2406799 0.7954326
## [5,] 1.1005990 1.0619758 2.1047783 2.7816902 1.4010878 0.6140937 0.5136842
## [6,] 0.9799103 2.7520425 2.5407624 1.3889136 0.4346808 1.0637950 0.1859157
##          [,15]     [,16]      [,17]     [,18]    [,19]     [,20]
## [1,] 0.1437680 4.1807643  1.7389423 3.0760640 1.550557 4.4838291
## [2,] 3.8674407 1.9349214  0.6333922 0.4862532 5.275571 0.1161029
## [3,] 1.4724240 0.5971116 11.5869157 0.7580736 4.755297 1.0583051
## [4,] 0.1243085 0.8376231  1.3723291 2.0884571 2.506128 1.2094517
## [5,] 6.2971803 0.8422164  1.5335222 0.3079718 2.729447 1.7164885
## [6,] 3.8052219 2.1611055  0.3280288 2.7773368 1.726558 1.3193446

Soru kapsamında “ornek veri setinde i. satırda negatif sayı yok ise çıktıda i. satırın ortalaması….dir yazsin.”,“Eğer veri setinde her hangi bir satırda negatif sayı var ise satır i negatif sayı bulunmaktadır.” ve “veri setindeki satırlardaki toplam negatif sayı toplamı üçü geçerse çktıda cok sayıda negatif sayı yazsın ve döngü çalışmayı durdursun.” yapılarının ele alınması istenmiştir.

Bu kapsamda ilk olarak, negatif satırların toplamını ele alacak bir yapı için neg_toplam ile 0 ataması yapmış bulunmaktayım. Ardından,for(i in 1:nrow(ornek)) yapısıyla birlikte i ile satır değişkeni ataması, 1:nrow ile ise 1’den başlayıp toplam satır sayısına kadar işlemin devam etmesine yönelik atama yapmış bulunmaktayım. Bunun ardından negatif sayı değerlerinin saptanması amacıyla sum yapısından yararlanarak satırlardaki i değerlerinden sıfırdan küçüklerin saptanması amacıyla sum(ornek[i,] <0 ataması yaptım vebunu ise ilk atadığım sıfırla toplama usulüyle devam ettirdim.

Negatif sayılara yönelik sayaç mantığını kurmamın ardından ise if kapsamında koşul ataması yaparak, print ile uyarı ataması yapıp, break ile sürecin devam etmesini engelledim. Buna benzer bir süreci ise pozitif sayılar ve negatif sayılar içinde uygulamış bulunmaktayım.

neg_toplam <- 0

for(i in 1:nrow(ornek)){
  neg_sayi <- sum(ornek[i, ] < 0)
  neg_toplam <- neg_toplam + neg_sayi
  if(neg_toplam > 3){
    print("Cok sayida negatif sayi")
    break
  }
  if(neg_sayi == 0){
    ort <- mean(ornek[i, ])
    print(paste("Satir", i, "ortalamasi", ort,"dir"))
  }
  else {
    print(paste("Satir", i, "negatif sayi bulunmaktadır."))
  }
}
## [1] "Satir 1 ortalamasi 1.81024640410365 dir"
## [1] "Satir 2 ortalamasi 1.38518610357355 dir"
## [1] "Satir 3 ortalamasi 1.91306477718819 dir"
## [1] "Satir 4 ortalamasi 1.4112379414075 dir"
## [1] "Satir 5 ortalamasi 1.4449874985066 dir"
## [1] "Satir 6 ortalamasi 1.45095623366252 dir"
## [1] "Satir 7 ortalamasi 1.28395242730511 dir"
## [1] "Satir 8 ortalamasi 1.09256285552594 dir"
## [1] "Satir 9 ortalamasi 1.42368154628106 dir"
## [1] "Satir 10 negatif sayi bulunmaktadır."
## [1] "Satir 11 ortalamasi 1.63867357063309 dir"
## [1] "Satir 12 negatif sayi bulunmaktadır."
## [1] "Satir 13 ortalamasi 1.47012239341985 dir"
## [1] "Satir 14 ortalamasi 1.68760963291761 dir"
## [1] "Satir 15 ortalamasi 1.51554665095691 dir"
## [1] "Satir 16 ortalamasi 1.99518274468864 dir"
## [1] "Satir 17 ortalamasi 1.47942292790106 dir"
## [1] "Satir 18 ortalamasi 1.4444947260594 dir"
## [1] "Satir 19 ortalamasi 1.54378752827146 dir"
## [1] "Satir 20 ortalamasi 2.17983862702061 dir"
## [1] "Satir 21 ortalamasi 1.48707990280766 dir"
## [1] "Satir 22 ortalamasi 2.10918427665028 dir"
## [1] "Satir 23 ortalamasi 2.53701879215026 dir"
## [1] "Satir 24 negatif sayi bulunmaktadır."
## [1] "Cok sayida negatif sayi"

8.2.4 Sorusu

Bu soru kapsamında belirli şekillerde yapay zeka desteği almış bulunduğumu ifade edebilirim.

İçi dolu kare oluşturma sürecinde ilk olarak function() ile fonksiyon ataması yapmış bulunmaktayım. Bu süreçte n değerini bilerek 5 atamış bulunmakla birlikte değer atamadığım durumda 4 lü bir yapı oluştuğunu gözlemledim. Ardından döngüyü oluşturmak için for yapısını tercih edip, cat fonksiyonu içerisinde rep("*",n değeri) yapısıyla birlikte 5’li bir sütun süreci oluşturmayı hedefledim.

ici_dolu_kare <- function(n=5){
  for(i in 1:n){
    cat(paste(rep("*", n), collapse=" "), "\n")
  }
}
ici_dolu_kare ()
## * * * * * 
## * * * * * 
## * * * * * 
## * * * * * 
## * * * * *

İçi boş kare oluşturma sürecinde ise ilk olarak function ile fonksiyon ataması yapmış olmakla birlikte üst satırı oluşturmak amacıyla rep("*",n,collapse="") yapısını kullandım. Orta satır içn ise de benzer bir mantıkla ilerledim. Ardından cat ile orta satıra yönelik yazdırma sürecini gerçekleştirmiş bulunmaktayım. Alt satır için ise yine cat fonksiyonunu kullanarak üst kısım için yazdığım kodu tekrardan aktarmış bulunmaktayım.

ici_bos_kare <- function(n=5){
  ust <- paste(rep("*", n), collapse=" ")
  orta <- if(n>2) paste0("*", paste(rep(" ", 2*(n-2)+1), collapse=""), "*") else ust
  cat(ust, "\n")
  if(n>2) cat(paste(rep(orta, n-2), collapse="\n"), "\n")
  if(n>1) cat(ust, "\n")
}
ici_bos_kare(5)
## * * * * * 
## *       *
## *       *
## *       * 
## * * * * *

Sol yana yatkın üçgen oluşturmak için ise fonksiyon atamasını yaptıktan sonra for ile her zaman yaptığımız gibi i değişkeninin 1’den başlayıp, atanacak veri sayısına göre düzenleme için n temelli atama yapmış bulunmaktayım. Ardından rep("*",i) ile de ele alacağımız i sayısı kadar atama için bir atama yapıp, collapse="" ile de satır ataması yapmış bulunmaktayım. Son olarak, cat(paste()) fonksiyonu ile de yazdığım üçgen yapısının aktarılmasını yapmış bulunmaktayım.

sol_ucgen <- function(n=5){
  for(i in 1:n){
    cat(paste(rep("*", i), collapse=" "), "\n")
  }
}
sol_ucgen(5)
## * 
## * * 
## * * * 
## * * * * 
## * * * * *

Bu kodu oluştururken yapay zekadan destek almış bulunmaktayım. Üçgen oluşturma sürecinde ise önceki yaptıklarım gibi fonksiyon içerisine 5 ataması yapmış bulunmaktayım. Ardından yapay zekanın önerisiyle birlikte üçgenin en altındaki yıldızların hesaplanması için maxw<-2*n-1 ataması yaptım. Ardından her satırı üretmek amacıyla sapply fonksiyonu içerisinde 1 ve n arası ilerleme temelli i satır oluşturma ataması yapmış bulunmaktayım. Ardından önckei yapılarda da kurudğum gibi paste() fonksiyonuyla birlikte yıldızların aktarılması sürecini gerçekleştirdim. Bunu yaparken de bu sefer sayıların azalmasına yönelik olarak 2*i-1 yapısı atamış bulunmaktayım.

Bu işlemlerin tamamlanmasının ardından ilk defa öğrendiğim ve kullandığım sprintf("%s", n-1+nchar(yildiz),yildiz) atamasıyla birlikte sağa yaslama yapısı kurmuş bulunmaktayım. Burada özellikle nchar temelli yapıyla birlikte doğru sayıda boşlukla atama yapmaya çalıştım. Son olarak cat(paste(lines, collapse="\n"), "\n") komutu tüm satırları birleştirdim.

ucgen <- function(n=5){
  maxw <- 2*n - 1
  lines <- sapply(1:n, function(i){
    yildiz <- paste(rep("*", 2*i-1), collapse="")
    sprintf("%*s", n - i + nchar(yildiz), yildiz) 
  })
  cat(paste(lines, collapse="\n"), "\n")
}
ucgen()
##     *
##    ***
##   *****
##  *******
## *********

Fonksiyon çalıştığında 1’den n’e kadar ilerleyen bir döngüyü oluşturmayı amaçladım ve for( i in 1:n) temelli bir yapı oluşturdum. Ardıdan satırlar için boşlukları ilk olarak n-1 olarak, yıldızları ise i olarak ele aldım.Bu iki yapıyla birlikte aslında aşağı inildikçe yıldız sayısının artışını ve yan yana olan boşlukları korumaya çalıştım.

Ardından cat(paste() yapısını tercih ederek yıldızların ve boşlukların yazdırılmasını sağlamış bulnumaktayım. Bu iki farklı yazdırma işlemini ise paste0 ile birleştirmiş bulnumaktayım. Bunu ise cat() fonksiyonu ile yazdırmış bulunmaktayım.

bu nedenle yıldızlar birer birer artarak üçgen görünümü oluşturur. paste komutuyla boşluklar ve yıldızlar ayrı ayrı üretilir, paste0 ile birleştirilir ve cat komutu ile ekrana yazdırılır. Böylece her satır boşluk + yıldız formunda yan yana yazılarak sağa yaslı bir yıldız üçgeni elde edilmiş olur. Bunları yaparken de collapse="" yapısını da olutşruarakta şekli tek parça halinde sunmaya çalıştım.

sag_ucgen <- function(n=5){
  for(i in 1:n){
    sag_bosluk <- n - i
    yildiz <- i
    cat(paste0(paste(rep(" ", sag_bosluk), collapse=""),
               paste(rep("*", yildiz), collapse="")), "\n")
  }
}
sag_ucgen(5)
##     * 
##    ** 
##   *** 
##  **** 
## *****

Bu kodu oluştururken yapay zekadan yardım almış bulunmaktayım. Bu fonksiyonda hersatırda strrep(" ", i-1) ile satır başına aktarılmanın sağlandığını öğrendim. Ardından sep= yapısıyla birlikte boşlukların hem satır aralarına hem de yıldızlar arasına eklenmesini sağladım. Son olarak, değinmeyi unuttuğumu fark edip, üstte de kullandığım gibi for ile döngü yapısını oluşturduğumu ifade edebilirim.

paralelcizgi <- function(n=5){
  for(i in 1:n) cat(strrep(" ", i-1), "*\n", sep="")
  for(i in 1:n) cat(strrep(" ", i-1), "*\n", sep="")
}
paralelcizgi()
## *
##  *
##   *
##    *
##     *
## *
##  *
##   *
##    *
##     *

İçi boş üçgeni oluştururken öncelikle cat(strrep(" ", n-1), "*\n", sep="") yapısını kullanarak en üstteki tek yıldızı oluşturdum. Bu satırdaki strrep(" ", n-1) ile yıldızın sola yaslanmasını engellemek için gerekli boşlukları oluşturdum. Ardından üçgenin orta kısmını oluşturmak için for(i in 2:(n-1)) döngüsünü kullandım. Bu döngüde her satırda önce dış kenar için gerekli olan soldaki boşlukları (strrep(" ", n-i)), ardından sol kenardaki yıldızı (*), sonra üçgenin iç boşluğunu oluşturan boşlukları (strrep(" ", 2*i-3)), en son ise sağ kenardaki yıldızı ekledim. Böylece üçgenin kenarları yıldızlardan, iç kısmı ise tamamen boşluklardan oluştu. Son aşamada cat(strrep("*", 2*n-1), "\n", sep="") yapısıyla üçgenin tabanını çizdim. Bu kapsamda 2*n - 1 ifadesi ile alttaki yıldız sayısını belirledim. Tüm kod boyunca `sep= kullanarakta cat() fonksiyonunun otomatik boşluk eklemesini engelledim.

ici_bos_ucgen<- function(n=5){
  cat(strrep(" ", n-1), "*\n", sep="")
  for(i in 2:(n-1)){
    cat(strrep(" ", n-i), "*", strrep(" ", 2*i-3), "*\n", sep="")
  }
  cat(strrep("*", 2*n-1), "\n", sep="")
}
ici_bos_ucgen()
##     *
##    * *
##   *   *
##  *     *
## *********

5.7.1’deki Sorular

5.7.1.1 Sorusu

for döngüsü ile liste kullanımı anlamak için tüm verileri 0 olan farklı boyutlarda verisetleri oluşturup bu veri setlerini çalışma alanınız yazdırabilirsiniz.

Bu kapsamda ilk olarak writexl paketini aktif ederek set kaydetme sürecini garantiye almış bulunmaktayım. Ardından, sıfırlı yapıyı oluşturmak için 9 satır sütuna kadar yapıyı oluşturmak için function yapısından yararlanarak set yapısı, satır-sütun bilgisi atamasını yapmış bulunmaktayım. Ardından öncelikle list fonskyinonundan yararlanarak boş bir liste ataması yapmış bulunmaktayım. Ardından for döngüsünden yararlanarak ilk olarak i değerininin sett değeri olarak atanacak sayıya kadar gitmesini i in 1:sett yapısıyla sağladım. Ardından boş listenin atamasını yapmak için data.frame() fonksiyonundan yararlanarak satır, nrow,ncol değerlerini yani satır sütun sayısı yapısını satir,sütun değişkenleriyle eşleştirmiş bulunmaktayım. Matrix’in başına ise 0 yazarak tüm sayıların sıfır olmasını sağlamış bulunmaktayım. Ardından write_xlsx yapısıyla birlikte de listelerin excel dosyası olarak atanmasını sağlamış bulunmaktayım.

library(writexl)
sifirli_set <- function(sett = 1, satir, sutun){
  liste <- list()
  for(i in 1:sett){
    liste[[i]] <- data.frame(
      matrix(0, nrow = satir[i], ncol = sutun[i])
    )
    write_xlsx(liste[[i]], paste0("sifirli_set", i, ".xlsx"))
  }
  return(liste)
}
sifirli_set(sett = 9, satir = 1:9, sutun = 1:9)
## [[1]]
##   matrix.0..nrow...satir.i...ncol...sutun.i..
## 1                                           0
## 
## [[2]]
##   X1 X2
## 1  0  0
## 2  0  0
## 
## [[3]]
##   X1 X2 X3
## 1  0  0  0
## 2  0  0  0
## 3  0  0  0
## 
## [[4]]
##   X1 X2 X3 X4
## 1  0  0  0  0
## 2  0  0  0  0
## 3  0  0  0  0
## 4  0  0  0  0
## 
## [[5]]
##   X1 X2 X3 X4 X5
## 1  0  0  0  0  0
## 2  0  0  0  0  0
## 3  0  0  0  0  0
## 4  0  0  0  0  0
## 5  0  0  0  0  0
## 
## [[6]]
##   X1 X2 X3 X4 X5 X6
## 1  0  0  0  0  0  0
## 2  0  0  0  0  0  0
## 3  0  0  0  0  0  0
## 4  0  0  0  0  0  0
## 5  0  0  0  0  0  0
## 6  0  0  0  0  0  0
## 
## [[7]]
##   X1 X2 X3 X4 X5 X6 X7
## 1  0  0  0  0  0  0  0
## 2  0  0  0  0  0  0  0
## 3  0  0  0  0  0  0  0
## 4  0  0  0  0  0  0  0
## 5  0  0  0  0  0  0  0
## 6  0  0  0  0  0  0  0
## 7  0  0  0  0  0  0  0
## 
## [[8]]
##   X1 X2 X3 X4 X5 X6 X7 X8
## 1  0  0  0  0  0  0  0  0
## 2  0  0  0  0  0  0  0  0
## 3  0  0  0  0  0  0  0  0
## 4  0  0  0  0  0  0  0  0
## 5  0  0  0  0  0  0  0  0
## 6  0  0  0  0  0  0  0  0
## 7  0  0  0  0  0  0  0  0
## 8  0  0  0  0  0  0  0  0
## 
## [[9]]
##   X1 X2 X3 X4 X5 X6 X7 X8 X9
## 1  0  0  0  0  0  0  0  0  0
## 2  0  0  0  0  0  0  0  0  0
## 3  0  0  0  0  0  0  0  0  0
## 4  0  0  0  0  0  0  0  0  0
## 5  0  0  0  0  0  0  0  0  0
## 6  0  0  0  0  0  0  0  0  0
## 7  0  0  0  0  0  0  0  0  0
## 8  0  0  0  0  0  0  0  0  0
## 9  0  0  0  0  0  0  0  0  0

Bu kodla ise öncelikle excel dosyalarını okuyabilmek için readxl paketini aktif etmiş bulunmaktayım. Ardından veriler adından boş bir liste ataması yaparak veri okuma okuma sürecine yönelik sadece numara değişkenini ele alacak bir fonksiyon ataması yaptım. Bu kapsamda for döngüsü kapsamında i in 1:numara değeriyle birlikte girilen numara değerine kadar tarama yapılmasını hedeflemiş bulunmaktayım. Ardından ise readxl ile ele alınacak yapıları bir öncekinde oluşturulan sifirli_set yapısıyla paste fonksiyonu ile atayıp kodu kullanıma hazır hale getirdim.

library(readxl)
veriler <- list()
veri_okuma <- function(numara){
for(i in 1:numara){
  veriler[[i]] <- read_excel(paste("sifirli_set",i,".xlsx",sep=""))
}
  return(veriler)
}

veri_okuma(numara=9)
## [[1]]
## # A tibble: 1 × 1
##   matrix.0..nrow...satir.i...ncol...sutun.i..
##                                         <dbl>
## 1                                           0
## 
## [[2]]
## # A tibble: 2 × 2
##      X1    X2
##   <dbl> <dbl>
## 1     0     0
## 2     0     0
## 
## [[3]]
## # A tibble: 3 × 3
##      X1    X2    X3
##   <dbl> <dbl> <dbl>
## 1     0     0     0
## 2     0     0     0
## 3     0     0     0
## 
## [[4]]
## # A tibble: 4 × 4
##      X1    X2    X3    X4
##   <dbl> <dbl> <dbl> <dbl>
## 1     0     0     0     0
## 2     0     0     0     0
## 3     0     0     0     0
## 4     0     0     0     0
## 
## [[5]]
## # A tibble: 5 × 5
##      X1    X2    X3    X4    X5
##   <dbl> <dbl> <dbl> <dbl> <dbl>
## 1     0     0     0     0     0
## 2     0     0     0     0     0
## 3     0     0     0     0     0
## 4     0     0     0     0     0
## 5     0     0     0     0     0
## 
## [[6]]
## # A tibble: 6 × 6
##      X1    X2    X3    X4    X5    X6
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1     0     0     0     0     0     0
## 2     0     0     0     0     0     0
## 3     0     0     0     0     0     0
## 4     0     0     0     0     0     0
## 5     0     0     0     0     0     0
## 6     0     0     0     0     0     0
## 
## [[7]]
## # A tibble: 7 × 7
##      X1    X2    X3    X4    X5    X6    X7
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1     0     0     0     0     0     0     0
## 2     0     0     0     0     0     0     0
## 3     0     0     0     0     0     0     0
## 4     0     0     0     0     0     0     0
## 5     0     0     0     0     0     0     0
## 6     0     0     0     0     0     0     0
## 7     0     0     0     0     0     0     0
## 
## [[8]]
## # A tibble: 8 × 8
##      X1    X2    X3    X4    X5    X6    X7    X8
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1     0     0     0     0     0     0     0     0
## 2     0     0     0     0     0     0     0     0
## 3     0     0     0     0     0     0     0     0
## 4     0     0     0     0     0     0     0     0
## 5     0     0     0     0     0     0     0     0
## 6     0     0     0     0     0     0     0     0
## 7     0     0     0     0     0     0     0     0
## 8     0     0     0     0     0     0     0     0
## 
## [[9]]
## # A tibble: 9 × 9
##      X1    X2    X3    X4    X5    X6    X7    X8    X9
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1     0     0     0     0     0     0     0     0     0
## 2     0     0     0     0     0     0     0     0     0
## 3     0     0     0     0     0     0     0     0     0
## 4     0     0     0     0     0     0     0     0     0
## 5     0     0     0     0     0     0     0     0     0
## 6     0     0     0     0     0     0     0     0     0
## 7     0     0     0     0     0     0     0     0     0
## 8     0     0     0     0     0     0     0     0     0
## 9     0     0     0     0     0     0     0     0     0

5.7.1.2 Sorusu

for döngüsü ile boş bir veri setinin sütunlarını farklı şekillerde oluşarabilirsiniz. Örneğin üç sütunu kategorik değişken, dört sütunu sürekli değişken olarak oluşturabilirsiniz.

Bu kapsamda ilk olarak fonksiyon kapsamındaki değişkenleri settt ve satir olarak belirlemiş bulunmaktayım. Ardından for kapsamında oluşturacağım settt değerine yönelik döngü için for(i in 1:settt) yapısını oluşturdum. Ardından üç kategorik değişkenlik, dört sürekli değişkenli seti oluşturmanın ilk aşaması olarak set.seed() ile sabitleme yapmış bulunmaktayım. Ardından ise kategorik değişkenleri sample(c(değişkenadları),satir[i](yazılacak yer),replace=TRUE ile oluşturdum. Sürekli verileri ise derste öğrendiğimiz runif(satir[i],0,100) yapısıyal birlikte atamış bulunmaktayım. Ardından ise cbind(nesne1,nesne2) yapısıyla birlikte iki nesneyi yani kategorik ve sürekli verileri tek sette birleştirip, write_xlsx ile de excel dosyası haline çevirmiş bulunmaktayım.

karmaset <- function(settt = 1, satir){
  for(i in 1:settt){
    set.seed(545)
    kategorik <- data.frame(
      degisken1 = sample(c("A","B","C"), satir[i], replace = TRUE),
      degisken2 = sample(c("A","B","C"), satir[i], replace = TRUE),
      degisken3 = sample(c("A","B","C"), satir[i], replace = TRUE)
    )
    surekli <- data.frame(
      degisken4 = runif(satir[i], 0, 100),
      degisken5 = runif(satir[i], 0, 100),
      degisken6 = runif(satir[i], 0, 100),
      degisken7 = runif(satir[i], 0, 100)
    )
    
    setsel <- cbind(kategorik, surekli)
    write_xlsx(setsel, paste0("karmaset_", i, ".xlsx"))
  }
}
karmaset(sett = 5, satir = c(5,6,7,8,9))

Bu kod chunkı 5.7.1’de yaptığım veri okuma yapısının aynısı olduğundan dolayı ek olarak bir açıklama eklememekteyim. Bu kısımda karışıklık olma ihtimaline karşı tek değiştirdiğim kısım numarayı numara1, verileri veriler1, veri_okumayı veri_okuma1 yapmak ve oluşturulan setin adını karmaset_ olarak değiştirmem oldu.

veriler1 <- list()
veri_okuma1 <- function(numara1){
for(i in 1:numara1){
  veriler1[[i]] <- read_excel(paste("karmaset_",i,".xlsx",sep=""))
}
  return(veriler1)
}

veri_okuma1(numara1=5)
## [[1]]
## # A tibble: 5 × 7
##   degisken1 degisken2 degisken3 degisken4 degisken5 degisken6 degisken7
##   <chr>     <chr>     <chr>         <dbl>     <dbl>     <dbl>     <dbl>
## 1 C         B         B             93.0       82.2     49.5       92.0
## 2 B         C         B              1.77      24.9     64.4       84.2
## 3 A         B         B             44.1       43.3     48.5       85.4
## 4 A         B         C             87.3       80.0      6.31      34.7
## 5 B         B         C             89.8       38.8      2.76      74.5
## 
## [[2]]
## # A tibble: 6 × 7
##   degisken1 degisken2 degisken3 degisken4 degisken5 degisken6 degisken7
##   <chr>     <chr>     <chr>         <dbl>     <dbl>     <dbl>     <dbl>
## 1 C         C         B              87.3     38.8       92.0      61.8
## 2 B         B         C              89.8     49.5       84.2      81.0
## 3 A         B         C              82.2     64.4       85.4      75.0
## 4 A         B         A              24.9     48.5       34.7      15.1
## 5 B         B         B              43.3      6.31      74.5      33.9
## 6 B         B         B              80.0      2.76      78.2      78.4
## 
## [[3]]
## # A tibble: 7 × 7
##   degisken1 degisken2 degisken3 degisken4 degisken5 degisken6 degisken7
##   <chr>     <chr>     <chr>         <dbl>     <dbl>     <dbl>     <dbl>
## 1 C         B         C              24.9      6.31      78.2     24.2 
## 2 B         B         A              43.3      2.76      61.8      3.33
## 3 A         B         B              80.0     92.0       81.0     71.4 
## 4 A         B         B              38.8     84.2       75.0     40.4 
## 5 B         B         C              49.5     85.4       15.1     35.2 
## 6 B         B         C              64.4     34.7       33.9     77.0 
## 7 C         C         C              48.5     74.5       78.4     58.0 
## 
## [[4]]
## # A tibble: 8 × 7
##   degisken1 degisken2 degisken3 degisken4 degisken5 degisken6 degisken7
##   <chr>     <chr>     <chr>         <dbl>     <dbl>     <dbl>     <dbl>
## 1 C         B         B             38.8       85.4     33.9      58.0 
## 2 B         B         B             49.5       34.7     78.4       6.56
## 3 A         B         C             64.4       74.5     24.2      69.3 
## 4 A         B         C             48.5       78.2      3.33     80.9 
## 5 B         B         C              6.31      61.8     71.4      54.0 
## 6 B         C         C              2.76      81.0     40.4      11.5 
## 7 C         C         A             92.0       75.0     35.2      27.7 
## 8 B         A         B             84.2       15.1     77.0      80.0 
## 
## [[5]]
## # A tibble: 9 × 7
##   degisken1 degisken2 degisken3 degisken4 degisken5 degisken6 degisken7
##   <chr>     <chr>     <chr>         <dbl>     <dbl>     <dbl>     <dbl>
## 1 C         B         C             48.5      61.8      40.4      27.7 
## 2 B         B         C              6.31     81.0      35.2      80.0 
## 3 A         B         C              2.76     75.0      77.0      52.3 
## 4 A         B         C             92.0      15.1      58.0      39.2 
## 5 B         C         A             84.2      33.9       6.56     79.9 
## 6 B         C         B             85.4      78.4      69.3      47.4 
## 7 C         A         A             34.7      24.2      80.9       4.12
## 8 B         B         C             74.5       3.33     54.0      67.6 
## 9 B         B         C             78.2      71.4      11.5      61.7

5.7.1.3 Sorusu

for döngüsü ile liste kullanımı anlamak için PISA veri setinden farklı boyutlarda verisetleri çekip bu veri setlerini çalışma alanınız yazdırabilirsiniz.

İlk olarak PISA veri setinde regresyonda da kullandığım dosyayı buraya readRDS("setadı") fonksiyonuyla aktarmış bulunmaktayım.

pisa_odev_set <- readRDS("pisa_kucuk_veri.rds")

Kodda hataları ele alırken yapay zekadan destek aldığımı belirtmek isterim. Çözüm açısından bakıldığında önemli destek sağladı.

Kodu oluştururken ilk başta sadece dplyr paketini aktif etmiştim. Buna karşın glimpse head gibi denemelerimde hata alma durumuma bağlı olarak haven paketini de aktif etmem gerektiğini anladım. Ardından öncelikle boş bir listeyi farklisayi adıyla oluşturdum. Bunun temel amacı ise boyut oluşturma sürecinde kullanıcak olmamdır. Ardından boyutların veri sayısı açısından ele alınacağını düşündüğümden dolayı satir diye bir nesne oluştururak boyutların kaçar veriden oluşacağına dair atama yapmış bulunmaktayım. Ardından fon döngüsünü oluşturma sürecimde ise nrow ve i ataması temelli şekilde veri sayısı atamasını yapmış bulunmaktayım. Ardından ise seti a değişkenine atayarak temelimi attım. Ancak ilk süreçte hatalar aldığımdan dolayı veri setini mutate(across(where(is.labelled), as_factor)) yapısıyla birlikte faktör yapısına çevirmiş bulunmaktayım.

İkinci for döngüsünü normalde for içinde for yaparak oluşturmaya çalıştım ancak bir türlü yapamadığımdan dolayı ayrı yazmış olmakla birlikte farklisayi listesindeki her boyutu ele alarak ve çalışma alanına pisaboyutsal_1, pisaboyutsal_2 gibi ayrı değişkenler olarak kaydettim. Ardından ise son döngüyle birlikte birlikte de cat("boyut(satırxsutun), dim() ve cat("toplam","nrow()) yapılarla birlikte yazdırma sürecini gerçekleştirdim.

library(dplyr)
library(haven)  
farklisayi <- list()
satir <- c(50, 100, 200, 300, 400)

for(i in 1:length(satir)){
  n <- min(satir[i], nrow(pisa_odev_set))  
  a <- pisa_odev_set[1:n, ]
  
  a <- a %>% mutate(across(where(is.labelled), as_factor))
  
  farklisayi[[i]] <- a
}


for(i in 1:length(farklisayi)){
  assign(paste0("pisaboyutsal_", i), farklisayi[[i]])
}

for(i in 1:length(farklisayi)){
  cat("------ Boyut:", i, "------\n")
  cat("Boyut (satır x sutun):", dim(farklisayi[[i]]), "\n")
  cat("Toplam veri sayısı:", nrow(farklisayi[[i]]) * ncol(farklisayi[[i]]), "\n\n")
  print(glimpse(farklisayi[[i]]))  
  cat("\n\n")
}
## ------ Boyut: 1 ------
## Boyut (satır x sutun): 50 14 
## Toplam veri sayısı: 700 
## 
## Rows: 50
## Columns: 14
## $ CNT       <fct> Finland, Finland, Finland, Finland, Finland, Finland, Finlan…
## $ IBTEACH   <fct> -0.7517, -0.0213, -0.6692, -0.9663, -0.2628, -0.9032, -1.858…
## $ PV1MATH   <dbl> 552.770, 295.221, 428.240, 528.308, 613.817, 462.924, 591.75…
## $ PV2MATH   <dbl> 561.277, 346.528, 531.261, 519.281, 632.505, 540.319, 624.80…
## $ PV3MATH   <dbl> 487.296, 306.484, 529.320, 543.374, 621.808, 509.235, 550.25…
## $ PV4MATH   <dbl> 528.070, 295.911, 446.920, 512.399, 586.427, 498.500, 620.19…
## $ PV5MATH   <dbl> 524.645, 349.831, 457.539, 503.091, 612.621, 527.923, 586.26…
## $ PV6MATH   <dbl> 523.157, 351.599, 452.198, 512.839, 614.188, 503.144, 613.85…
## $ PV7MATH   <dbl> 532.268, 356.919, 465.291, 554.881, 621.722, 522.192, 628.61…
## $ PV8MATH   <dbl> 500.650, 354.747, 486.228, 514.830, 618.043, 497.731, 625.23…
## $ PV9MATH   <dbl> 491.046, 263.943, 438.764, 457.858, 612.827, 523.996, 618.15…
## $ PV10MATH  <dbl> 516.077, 351.914, 468.144, 527.227, 626.500, 490.842, 618.35…
## $ ST004D01T <fct> Female, Female, Male, Male, Female, Female, Female, Female, …
## $ TEACHSUP  <fct> 0.5731, 0.9209, -1.0718, -0.1133, 1.4475, 1.4475, -0.2618, 0…
## # A tibble: 50 × 14
##    CNT   IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
##    <fct> <fct>     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
##  1 Finl… -0.7517    553.    561.    487.    528.    525.    523.    532.    501.
##  2 Finl… -0.0213    295.    347.    306.    296.    350.    352.    357.    355.
##  3 Finl… -0.6692    428.    531.    529.    447.    458.    452.    465.    486.
##  4 Finl… -0.9663    528.    519.    543.    512.    503.    513.    555.    515.
##  5 Finl… -0.2628    614.    633.    622.    586.    613.    614.    622.    618.
##  6 Finl… -0.9032    463.    540.    509.    498.    528.    503.    522.    498.
##  7 Finl… -1.8581    592.    625.    550.    620.    586.    614.    629.    625.
##  8 Finl… -0.6139    511.    515.    490.    538.    506.    491.    496.    532.
##  9 Finl… -0.1049    512.    539.    463.    498.    468.    506.    490.    494.
## 10 Finl… -0.0908    501.    552.    576.    570.    528.    537.    601.    530.
## # ℹ 40 more rows
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## #   TEACHSUP <fct>
## 
## 
## ------ Boyut: 2 ------
## Boyut (satır x sutun): 100 14 
## Toplam veri sayısı: 1400 
## 
## Rows: 100
## Columns: 14
## $ CNT       <fct> Finland, Finland, Finland, Finland, Finland, Finland, Finlan…
## $ IBTEACH   <fct> -0.7517, -0.0213, -0.6692, -0.9663, -0.2628, -0.9032, -1.858…
## $ PV1MATH   <dbl> 552.770, 295.221, 428.240, 528.308, 613.817, 462.924, 591.75…
## $ PV2MATH   <dbl> 561.277, 346.528, 531.261, 519.281, 632.505, 540.319, 624.80…
## $ PV3MATH   <dbl> 487.296, 306.484, 529.320, 543.374, 621.808, 509.235, 550.25…
## $ PV4MATH   <dbl> 528.070, 295.911, 446.920, 512.399, 586.427, 498.500, 620.19…
## $ PV5MATH   <dbl> 524.645, 349.831, 457.539, 503.091, 612.621, 527.923, 586.26…
## $ PV6MATH   <dbl> 523.157, 351.599, 452.198, 512.839, 614.188, 503.144, 613.85…
## $ PV7MATH   <dbl> 532.268, 356.919, 465.291, 554.881, 621.722, 522.192, 628.61…
## $ PV8MATH   <dbl> 500.650, 354.747, 486.228, 514.830, 618.043, 497.731, 625.23…
## $ PV9MATH   <dbl> 491.046, 263.943, 438.764, 457.858, 612.827, 523.996, 618.15…
## $ PV10MATH  <dbl> 516.077, 351.914, 468.144, 527.227, 626.500, 490.842, 618.35…
## $ ST004D01T <fct> Female, Female, Male, Male, Female, Female, Female, Female, …
## $ TEACHSUP  <fct> 0.5731, 0.9209, -1.0718, -0.1133, 1.4475, 1.4475, -0.2618, 0…
## # A tibble: 100 × 14
##    CNT   IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
##    <fct> <fct>     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
##  1 Finl… -0.7517    553.    561.    487.    528.    525.    523.    532.    501.
##  2 Finl… -0.0213    295.    347.    306.    296.    350.    352.    357.    355.
##  3 Finl… -0.6692    428.    531.    529.    447.    458.    452.    465.    486.
##  4 Finl… -0.9663    528.    519.    543.    512.    503.    513.    555.    515.
##  5 Finl… -0.2628    614.    633.    622.    586.    613.    614.    622.    618.
##  6 Finl… -0.9032    463.    540.    509.    498.    528.    503.    522.    498.
##  7 Finl… -1.8581    592.    625.    550.    620.    586.    614.    629.    625.
##  8 Finl… -0.6139    511.    515.    490.    538.    506.    491.    496.    532.
##  9 Finl… -0.1049    512.    539.    463.    498.    468.    506.    490.    494.
## 10 Finl… -0.0908    501.    552.    576.    570.    528.    537.    601.    530.
## # ℹ 90 more rows
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## #   TEACHSUP <fct>
## 
## 
## ------ Boyut: 3 ------
## Boyut (satır x sutun): 200 14 
## Toplam veri sayısı: 2800 
## 
## Rows: 200
## Columns: 14
## $ CNT       <fct> Finland, Finland, Finland, Finland, Finland, Finland, Finlan…
## $ IBTEACH   <fct> -0.7517, -0.0213, -0.6692, -0.9663, -0.2628, -0.9032, -1.858…
## $ PV1MATH   <dbl> 552.770, 295.221, 428.240, 528.308, 613.817, 462.924, 591.75…
## $ PV2MATH   <dbl> 561.277, 346.528, 531.261, 519.281, 632.505, 540.319, 624.80…
## $ PV3MATH   <dbl> 487.296, 306.484, 529.320, 543.374, 621.808, 509.235, 550.25…
## $ PV4MATH   <dbl> 528.070, 295.911, 446.920, 512.399, 586.427, 498.500, 620.19…
## $ PV5MATH   <dbl> 524.645, 349.831, 457.539, 503.091, 612.621, 527.923, 586.26…
## $ PV6MATH   <dbl> 523.157, 351.599, 452.198, 512.839, 614.188, 503.144, 613.85…
## $ PV7MATH   <dbl> 532.268, 356.919, 465.291, 554.881, 621.722, 522.192, 628.61…
## $ PV8MATH   <dbl> 500.650, 354.747, 486.228, 514.830, 618.043, 497.731, 625.23…
## $ PV9MATH   <dbl> 491.046, 263.943, 438.764, 457.858, 612.827, 523.996, 618.15…
## $ PV10MATH  <dbl> 516.077, 351.914, 468.144, 527.227, 626.500, 490.842, 618.35…
## $ ST004D01T <fct> Female, Female, Male, Male, Female, Female, Female, Female, …
## $ TEACHSUP  <fct> 0.5731, 0.9209, -1.0718, -0.1133, 1.4475, 1.4475, -0.2618, 0…
## # A tibble: 200 × 14
##    CNT   IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
##    <fct> <fct>     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
##  1 Finl… -0.7517    553.    561.    487.    528.    525.    523.    532.    501.
##  2 Finl… -0.0213    295.    347.    306.    296.    350.    352.    357.    355.
##  3 Finl… -0.6692    428.    531.    529.    447.    458.    452.    465.    486.
##  4 Finl… -0.9663    528.    519.    543.    512.    503.    513.    555.    515.
##  5 Finl… -0.2628    614.    633.    622.    586.    613.    614.    622.    618.
##  6 Finl… -0.9032    463.    540.    509.    498.    528.    503.    522.    498.
##  7 Finl… -1.8581    592.    625.    550.    620.    586.    614.    629.    625.
##  8 Finl… -0.6139    511.    515.    490.    538.    506.    491.    496.    532.
##  9 Finl… -0.1049    512.    539.    463.    498.    468.    506.    490.    494.
## 10 Finl… -0.0908    501.    552.    576.    570.    528.    537.    601.    530.
## # ℹ 190 more rows
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## #   TEACHSUP <fct>
## 
## 
## ------ Boyut: 4 ------
## Boyut (satır x sutun): 300 14 
## Toplam veri sayısı: 4200 
## 
## Rows: 300
## Columns: 14
## $ CNT       <fct> Finland, Finland, Finland, Finland, Finland, Finland, Finlan…
## $ IBTEACH   <fct> -0.7517, -0.0213, -0.6692, -0.9663, -0.2628, -0.9032, -1.858…
## $ PV1MATH   <dbl> 552.770, 295.221, 428.240, 528.308, 613.817, 462.924, 591.75…
## $ PV2MATH   <dbl> 561.277, 346.528, 531.261, 519.281, 632.505, 540.319, 624.80…
## $ PV3MATH   <dbl> 487.296, 306.484, 529.320, 543.374, 621.808, 509.235, 550.25…
## $ PV4MATH   <dbl> 528.070, 295.911, 446.920, 512.399, 586.427, 498.500, 620.19…
## $ PV5MATH   <dbl> 524.645, 349.831, 457.539, 503.091, 612.621, 527.923, 586.26…
## $ PV6MATH   <dbl> 523.157, 351.599, 452.198, 512.839, 614.188, 503.144, 613.85…
## $ PV7MATH   <dbl> 532.268, 356.919, 465.291, 554.881, 621.722, 522.192, 628.61…
## $ PV8MATH   <dbl> 500.650, 354.747, 486.228, 514.830, 618.043, 497.731, 625.23…
## $ PV9MATH   <dbl> 491.046, 263.943, 438.764, 457.858, 612.827, 523.996, 618.15…
## $ PV10MATH  <dbl> 516.077, 351.914, 468.144, 527.227, 626.500, 490.842, 618.35…
## $ ST004D01T <fct> Female, Female, Male, Male, Female, Female, Female, Female, …
## $ TEACHSUP  <fct> 0.5731, 0.9209, -1.0718, -0.1133, 1.4475, 1.4475, -0.2618, 0…
## # A tibble: 300 × 14
##    CNT   IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
##    <fct> <fct>     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
##  1 Finl… -0.7517    553.    561.    487.    528.    525.    523.    532.    501.
##  2 Finl… -0.0213    295.    347.    306.    296.    350.    352.    357.    355.
##  3 Finl… -0.6692    428.    531.    529.    447.    458.    452.    465.    486.
##  4 Finl… -0.9663    528.    519.    543.    512.    503.    513.    555.    515.
##  5 Finl… -0.2628    614.    633.    622.    586.    613.    614.    622.    618.
##  6 Finl… -0.9032    463.    540.    509.    498.    528.    503.    522.    498.
##  7 Finl… -1.8581    592.    625.    550.    620.    586.    614.    629.    625.
##  8 Finl… -0.6139    511.    515.    490.    538.    506.    491.    496.    532.
##  9 Finl… -0.1049    512.    539.    463.    498.    468.    506.    490.    494.
## 10 Finl… -0.0908    501.    552.    576.    570.    528.    537.    601.    530.
## # ℹ 290 more rows
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## #   TEACHSUP <fct>
## 
## 
## ------ Boyut: 5 ------
## Boyut (satır x sutun): 400 14 
## Toplam veri sayısı: 5600 
## 
## Rows: 400
## Columns: 14
## $ CNT       <fct> Finland, Finland, Finland, Finland, Finland, Finland, Finlan…
## $ IBTEACH   <fct> -0.7517, -0.0213, -0.6692, -0.9663, -0.2628, -0.9032, -1.858…
## $ PV1MATH   <dbl> 552.770, 295.221, 428.240, 528.308, 613.817, 462.924, 591.75…
## $ PV2MATH   <dbl> 561.277, 346.528, 531.261, 519.281, 632.505, 540.319, 624.80…
## $ PV3MATH   <dbl> 487.296, 306.484, 529.320, 543.374, 621.808, 509.235, 550.25…
## $ PV4MATH   <dbl> 528.070, 295.911, 446.920, 512.399, 586.427, 498.500, 620.19…
## $ PV5MATH   <dbl> 524.645, 349.831, 457.539, 503.091, 612.621, 527.923, 586.26…
## $ PV6MATH   <dbl> 523.157, 351.599, 452.198, 512.839, 614.188, 503.144, 613.85…
## $ PV7MATH   <dbl> 532.268, 356.919, 465.291, 554.881, 621.722, 522.192, 628.61…
## $ PV8MATH   <dbl> 500.650, 354.747, 486.228, 514.830, 618.043, 497.731, 625.23…
## $ PV9MATH   <dbl> 491.046, 263.943, 438.764, 457.858, 612.827, 523.996, 618.15…
## $ PV10MATH  <dbl> 516.077, 351.914, 468.144, 527.227, 626.500, 490.842, 618.35…
## $ ST004D01T <fct> Female, Female, Male, Male, Female, Female, Female, Female, …
## $ TEACHSUP  <fct> 0.5731, 0.9209, -1.0718, -0.1133, 1.4475, 1.4475, -0.2618, 0…
## # A tibble: 400 × 14
##    CNT   IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
##    <fct> <fct>     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
##  1 Finl… -0.7517    553.    561.    487.    528.    525.    523.    532.    501.
##  2 Finl… -0.0213    295.    347.    306.    296.    350.    352.    357.    355.
##  3 Finl… -0.6692    428.    531.    529.    447.    458.    452.    465.    486.
##  4 Finl… -0.9663    528.    519.    543.    512.    503.    513.    555.    515.
##  5 Finl… -0.2628    614.    633.    622.    586.    613.    614.    622.    618.
##  6 Finl… -0.9032    463.    540.    509.    498.    528.    503.    522.    498.
##  7 Finl… -1.8581    592.    625.    550.    620.    586.    614.    629.    625.
##  8 Finl… -0.6139    511.    515.    490.    538.    506.    491.    496.    532.
##  9 Finl… -0.1049    512.    539.    463.    498.    468.    506.    490.    494.
## 10 Finl… -0.0908    501.    552.    576.    570.    528.    537.    601.    530.
## # ℹ 390 more rows
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## #   TEACHSUP <fct>

5.7.1.4 Sorusu

for döngüsü ile çalışma alanlarınızdaki veri setlerini okuyup, her bir bir seti için özet bilgileri bir listede saklayabilirsiniz.

Bu kod satırı kapsamında öncelikle elde ettiğim özet yapıları listede sakladığımda da bir öncekiyle aynı yapıları elde ettiğimi ifade edebilirim. İlk olarak ls(pattern = "^pisaboyutsal_") ile çalışma alanımdaki adı pisaboyutsal_ ile başlayan tüm veri setlerini buldum.Bunları ise setdegerleri değişkenine atadım. Ardından, for döngüsüyle her veri setini ele alarak döngüde get(setdegerleri[i]) fonksiyonunu kullanarak veri setinin adından yola çıkarak nesnenin kendisine eriştim.Ardından, ozet adını verdiğim listeye, her veri seti için aalt boyutları oluşturarak verileri kaydettim. Bu boyutlarda, veri setinin isim bilgisini, satır ve sütun bilgisini, ayrılmış satir ve sutun sayılarını ve en önemlisi head(veri) kullanarak veri setinin ilk birkaç gözlemi yansıttım.

ozet <- list()
setdegerleri<- ls(pattern = "^pisaboyutsal_") 

for(i in seq_along(setdegerleri)){
  veri <- get(setdegerleri[i])  
  ozet[[i]] <- list(
    isim = setdegerleri[i],
    boyut = dim(veri),
    satir = nrow(veri),
    sutun = ncol(veri),
    baslangic = head(veri)      
  )
}
ozet
## [[1]]
## [[1]]$isim
## [1] "pisaboyutsal_1"
## 
## [[1]]$boyut
## [1] 50 14
## 
## [[1]]$satir
## [1] 50
## 
## [[1]]$sutun
## [1] 14
## 
## [[1]]$baslangic
## # A tibble: 6 × 14
##   CNT    IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
##   <fct>  <fct>     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1 Finla… -0.7517    553.    561.    487.    528.    525.    523.    532.    501.
## 2 Finla… -0.0213    295.    347.    306.    296.    350.    352.    357.    355.
## 3 Finla… -0.6692    428.    531.    529.    447.    458.    452.    465.    486.
## 4 Finla… -0.9663    528.    519.    543.    512.    503.    513.    555.    515.
## 5 Finla… -0.2628    614.    633.    622.    586.    613.    614.    622.    618.
## 6 Finla… -0.9032    463.    540.    509.    498.    528.    503.    522.    498.
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## #   TEACHSUP <fct>
## 
## 
## [[2]]
## [[2]]$isim
## [1] "pisaboyutsal_2"
## 
## [[2]]$boyut
## [1] 100  14
## 
## [[2]]$satir
## [1] 100
## 
## [[2]]$sutun
## [1] 14
## 
## [[2]]$baslangic
## # A tibble: 6 × 14
##   CNT    IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
##   <fct>  <fct>     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1 Finla… -0.7517    553.    561.    487.    528.    525.    523.    532.    501.
## 2 Finla… -0.0213    295.    347.    306.    296.    350.    352.    357.    355.
## 3 Finla… -0.6692    428.    531.    529.    447.    458.    452.    465.    486.
## 4 Finla… -0.9663    528.    519.    543.    512.    503.    513.    555.    515.
## 5 Finla… -0.2628    614.    633.    622.    586.    613.    614.    622.    618.
## 6 Finla… -0.9032    463.    540.    509.    498.    528.    503.    522.    498.
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## #   TEACHSUP <fct>
## 
## 
## [[3]]
## [[3]]$isim
## [1] "pisaboyutsal_3"
## 
## [[3]]$boyut
## [1] 200  14
## 
## [[3]]$satir
## [1] 200
## 
## [[3]]$sutun
## [1] 14
## 
## [[3]]$baslangic
## # A tibble: 6 × 14
##   CNT    IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
##   <fct>  <fct>     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1 Finla… -0.7517    553.    561.    487.    528.    525.    523.    532.    501.
## 2 Finla… -0.0213    295.    347.    306.    296.    350.    352.    357.    355.
## 3 Finla… -0.6692    428.    531.    529.    447.    458.    452.    465.    486.
## 4 Finla… -0.9663    528.    519.    543.    512.    503.    513.    555.    515.
## 5 Finla… -0.2628    614.    633.    622.    586.    613.    614.    622.    618.
## 6 Finla… -0.9032    463.    540.    509.    498.    528.    503.    522.    498.
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## #   TEACHSUP <fct>
## 
## 
## [[4]]
## [[4]]$isim
## [1] "pisaboyutsal_4"
## 
## [[4]]$boyut
## [1] 300  14
## 
## [[4]]$satir
## [1] 300
## 
## [[4]]$sutun
## [1] 14
## 
## [[4]]$baslangic
## # A tibble: 6 × 14
##   CNT    IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
##   <fct>  <fct>     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1 Finla… -0.7517    553.    561.    487.    528.    525.    523.    532.    501.
## 2 Finla… -0.0213    295.    347.    306.    296.    350.    352.    357.    355.
## 3 Finla… -0.6692    428.    531.    529.    447.    458.    452.    465.    486.
## 4 Finla… -0.9663    528.    519.    543.    512.    503.    513.    555.    515.
## 5 Finla… -0.2628    614.    633.    622.    586.    613.    614.    622.    618.
## 6 Finla… -0.9032    463.    540.    509.    498.    528.    503.    522.    498.
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## #   TEACHSUP <fct>
## 
## 
## [[5]]
## [[5]]$isim
## [1] "pisaboyutsal_5"
## 
## [[5]]$boyut
## [1] 400  14
## 
## [[5]]$satir
## [1] 400
## 
## [[5]]$sutun
## [1] 14
## 
## [[5]]$baslangic
## # A tibble: 6 × 14
##   CNT    IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
##   <fct>  <fct>     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1 Finla… -0.7517    553.    561.    487.    528.    525.    523.    532.    501.
## 2 Finla… -0.0213    295.    347.    306.    296.    350.    352.    357.    355.
## 3 Finla… -0.6692    428.    531.    529.    447.    458.    452.    465.    486.
## 4 Finla… -0.9663    528.    519.    543.    512.    503.    513.    555.    515.
## 5 Finla… -0.2628    614.    633.    622.    586.    613.    614.    622.    618.
## 6 Finla… -0.9032    463.    540.    509.    498.    528.    503.    522.    498.
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## #   TEACHSUP <fct>

5.7.1 Kapsamında Ek Denemem

Bu kodda öncelikle veriselll adında boş bir liste oluşturdum. Bu listeye ise oluşturacağım farklı veri setlerini ekledim. Daha sonra setsell <- 5 ile beş farklı veri seti oluşturacağımı ekledim ve satirsall <- c(10, 15, 20, 25, 30) ile her veri setinin kaç satır olacağını tanımladım. For döngüsü içinde her veri setini sırayla oluşturdum ve ö kategorik değişken olarak Grup ve Durum sütunlarını rastgele değerlerle oluşturdum. Ardından sayısal değişkenler olan Puan ve Yas sütunlarını rastgele değerlerle ürettim. Kategorik ve sayısal sütunları cbind() ile birleştirerek abc adlı tek bir veri seti hâline getirdim. Bu veri setinde bazı değişiklikler yaptım. Bu kapsamda puan sütununu %10 artırdım ve grup sütunu A olan satırlarda Durum değerini var yaptım. Ardından hazırladığım veri setini önce veriselll listesine ekledim. Son olarak her veri setini Excel dosyası olarak kaydettim.

veriselll <- list()
setsell <- 5
satirsall <- c(10, 15, 20, 25, 30)

for(i in 1:setsell){
  kategorikk <- data.frame(
    Grup = sample(c("A","B","C"), satirsall[i], replace = TRUE),
    Durum = sample(c("Var","Yok"), satirsall[i], replace = TRUE)
  )
  sayisall <- data.frame(
    Puan = runif(satirsall[i], 0, 100),
    Yas = sample(10:20, satirsall[i], replace = TRUE)
  )
  abc <- cbind(kategorikk, sayisall)
  abc$Puan <- abc$Puan * 1.1
  abc$Durum[abc$Grup == "A"] <- "Var"
  veriselll[[i]] <- abc
  write_xlsx(abc, paste0("degisik_veri_seti_", i, ".xlsx"))
}
veriselll
## [[1]]
##    Grup Durum      Puan Yas
## 1     B   Var  17.24550  19
## 2     B   Yok  85.37953  20
## 3     C   Yok  36.18483  11
## 4     A   Var 102.77941  14
## 5     B   Yok 106.41918  18
## 6     A   Var  36.72290  12
## 7     B   Var  90.42521  18
## 8     A   Var 103.47960  15
## 9     B   Var  40.10740  18
## 10    B   Yok  86.81984  13
## 
## [[2]]
##    Grup Durum      Puan Yas
## 1     B   Var 13.656281  16
## 2     B   Var 87.301822  14
## 3     A   Var  8.850351  18
## 4     B   Yok 98.943910  19
## 5     C   Yok 12.236686  14
## 6     A   Var 24.216425  14
## 7     A   Var 83.834315  15
## 8     B   Var 68.338453  13
## 9     B   Var 82.378634  13
## 10    C   Yok 84.364795  16
## 11    A   Var 34.119822  20
## 12    B   Yok  1.927105  12
## 13    B   Var  1.122165  20
## 14    C   Yok 53.248903  10
## 15    C   Yok 95.036806  16
## 
## [[3]]
##    Grup Durum      Puan Yas
## 1     C   Var 69.843259  19
## 2     A   Var 77.620480  18
## 3     A   Var 34.201655  16
## 4     A   Var 16.355596  10
## 5     B   Var 75.677028  16
## 6     B   Var 53.730863  19
## 7     A   Var  1.621530  18
## 8     C   Yok 17.431350  10
## 9     B   Var 46.275044  12
## 10    B   Yok  6.856541  16
## 11    B   Var 17.330779  15
## 12    C   Yok 75.580836  12
## 13    A   Var 36.490871  11
## 14    B   Var  0.753383  12
## 15    C   Yok 97.396690  13
## 16    C   Var 14.081010  11
## 17    C   Var 57.496126  18
## 18    B   Var 10.426988  18
## 19    B   Yok 70.480682  20
## 20    A   Var 26.485127  18
## 
## [[4]]
##    Grup Durum       Puan Yas
## 1     C   Var  12.452408  12
## 2     A   Var 109.703226  10
## 3     A   Var  77.434080  19
## 4     B   Yok 106.525871  15
## 5     B   Var  26.462724  14
## 6     C   Yok  17.841601  15
## 7     B   Yok  45.524648  16
## 8     B   Yok  66.245533  18
## 9     A   Var  62.382908  14
## 10    C   Yok  56.266879  12
## 11    A   Var  23.421630  10
## 12    C   Yok  41.165149  10
## 13    A   Var  38.073729  14
## 14    B   Var   5.323218  11
## 15    B   Yok  49.915531  16
## 16    B   Var  59.068687  20
## 17    C   Var  38.220132  20
## 18    C   Var  32.158477  13
## 19    B   Yok  80.883909  15
## 20    B   Var  83.089092  14
## 21    B   Yok  26.474905  12
## 22    B   Var  51.542330  10
## 23    C   Yok  82.440646  10
## 24    B   Var  64.866523  19
## 25    C   Yok  98.099205  13
## 
## [[5]]
##    Grup Durum       Puan Yas
## 1     B   Var  19.321941  17
## 2     A   Var  24.667951  17
## 3     A   Var   9.321557  18
## 4     C   Yok  82.035232  20
## 5     B   Yok  24.701813  10
## 6     A   Var  83.476107  12
## 7     C   Var  14.014004  13
## 8     B   Var  58.739434  19
## 9     A   Var  75.822048  13
## 10    C   Yok  23.492458  11
## 11    C   Yok 107.214506  19
## 12    A   Var  55.485505  11
## 13    C   Var 103.089099  15
## 14    B   Var  99.271428  16
## 15    B   Yok  90.635375  14
## 16    A   Var  10.881707  13
## 17    C   Yok  97.077141  13
## 18    C   Var  79.861745  16
## 19    A   Var  87.057459  17
## 20    C   Var  61.955245  20
## 21    C   Yok  28.314985  13
## 22    C   Var  71.122273  18
## 23    C   Var  52.844573  12
## 24    B   Var  76.361346  13
## 25    B   Yok  36.537241  14
## 26    B   Var  91.440428  19
## 27    A   Var  89.776126  11
## 28    B   Yok  66.153657  15
## 29    C   Var  39.570510  18
## 30    C   Yok  55.545912  16

Ayrıca

Regresyon ödevim ve diğer öğrenme günlüklerim RPUBS’ta bulunmaktadır. Ek olarak, buraya aynı kodları eklememiş bulunmaktayım.