R Listeler

Dr. Kubra Atalay Kabasakal

Kasim 2021

Listeler

Liste cok esnek ve karmasik bir veri yapisidir. list() fonksiyonu ile olusturulur. Listelerde farkli turden yeri yapilari, farkli uzunlukta yer alabilir.

ad  <-  c("Ali","Elif","Su","Deniz","Aras","Berk","Can","Ece","Efe","Arda")
boy <- c(160,165,170,155,167,162,169,158,160,164)
kilo <- c(55,55,57,50,48,65,58,62,45,47)
# ad, boy ve kilo vektorleri ile liste olusturulmasi
liste <- list(ad,boy,kilo)
liste
## [[1]]
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"  
## [10] "Arda" 
## 
## [[2]]
##  [1] 160 165 170 155 167 162 169 158 160 164
## 
## [[3]]
##  [1] 55 55 57 50 48 65 58 62 45 47

Liste Bilesenleri - I

Bir listedeki tum bilesenleri ve turleri gormek icin str() fonksiyonu kullanilabilir.

str(liste) #uc bilesen  ve iki farkli nesne turu
## List of 3
##  $ : chr [1:10] "Ali" "Elif" "Su" "Deniz" ...
##  $ : num [1:10] 160 165 170 155 167 162 169 158 160 164
##  $ : num [1:10] 55 55 57 50 48 65 58 62 45 47

Liste Bilesenleri - II

Listeler kendi icinde de farklı listeler barindirabilir. 4 bilesenli liste

liste2 <- list(liste,1,2,3) # liste ici liste
str(liste2)
## List of 4
##  $ :List of 3
##   ..$ : chr [1:10] "Ali" "Elif" "Su" "Deniz" ...
##   ..$ : num [1:10] 160 165 170 155 167 162 169 158 160 164
##   ..$ : num [1:10] 55 55 57 50 48 65 58 62 45 47
##  $ : num 1
##  $ : num 2
##  $ : num 3

Liste Bilesenleri - III

Listeler kendi icinde de farklı listeler barindirabilir. 3 bilesenli liste

liste3 <- list(liste,c(1,2,3),c(TRUE,FALSE))
str(liste3)
## List of 3
##  $ :List of 3
##   ..$ : chr [1:10] "Ali" "Elif" "Su" "Deniz" ...
##   ..$ : num [1:10] 160 165 170 155 167 162 169 158 160 164
##   ..$ : num [1:10] 55 55 57 50 48 65 58 62 45 47
##  $ : num [1:3] 1 2 3
##  $ : logi [1:2] TRUE FALSE

Liste Bilesenleri - IV

Liste bilesenleri isimlendirilebilir. Listelerde bilesenler numara [[1]] ya da $ ile eleman secilir.

liste # isimsiz liste, isim degil numara [[1]]
## [[1]]
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"  
## [10] "Arda" 
## 
## [[2]]
##  [1] 160 165 170 155 167 162 169 158 160 164
## 
## [[3]]
##  [1] 55 55 57 50 48 65 58 62 45 47
liste[[3]]
##  [1] 55 55 57 50 48 65 58 62 45 47

Isımlendirilmis listelerde ise bu islem $ operatoru ile yapilabilir.

liste_isim <- list(isim = ad,boyolcum = boy,kiloolcum =kilo)
liste_isim # isimli liste $
## $isim
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"  
## [10] "Arda" 
## 
## $boyolcum
##  [1] 160 165 170 155 167 162 169 158 160 164
## 
## $kiloolcum
##  [1] 55 55 57 50 48 65 58 62 45 47
liste_isim$kiloolcum
##  [1] 55 55 57 50 48 65 58 62 45 47

Liste Bilesenleri - V

# liste nesnesinin ilk bileseninin secilmesi

# liste_isim nesnesinin ilk bileseninin seccilmesi

# liste nesnesinin ikinci bileseninin secilmesi

# liste_isim nesnesinin ikinci bileseninin secilmesi

# liste nesnesinin ucuncu bileseninin secilmesi

# liste_isim nesnesinin ucuncu bileseninin secilmesi

Liste Bilesenleri - VI

Liste bilesenlerin icinden eleman secimi ise bilesenin turune gore yapilabilir. Ornegin bilesen vektor ise icinden eleman secmek "[]" operatoru ya da c() fonksiyonu ile yapilir.

# liste nesnesinin ucuncu bileseninin ilk elemaninin secilmesi (2 yol)

#liste_isim nesnesinin ucuncu bileseninin birinci ve ucuncu elemaninin secilmesi

# liste_isim nesnesinin birinci bilesenin birinci elemanina deger atanmasi

Listeye eleman eklenmesi

liste isimli listeye, cinsiyet adi ile yeni bir bilesen eklenmesi $ operatoru ile

cinsiyet <- c("erkek","kadin","kadin","kadin","erkek","erkek","erkek","kadin","erkek","erkek")
liste_isim$cinsiyet <- c("erkek","kadin","kadin","kadin","erkek","erkek","erkek","kadin","erkek","erkek")

liste isimli listeye, cinsiyet2 adi ile yeni bir bilesen eklenmesi [[]] operatoru ile

liste_isim[["cinsiyet2"]] <- c("erkek","kadin","kadin","kadin","erkek","erkek","erkek","kadin","erkek","erkek")
liste_isim <- c(liste_isim, c("erkek","kadin"))

Listeler

Listeler, verileri organize etmenin ve mumkun oldugunca az sayida degisken adina sahip olmanin kullanisli bir yoludur. Listeler genellikle R’da istatistiksel analizlerin ciktisinda kullanilmaktadir. Ornegin regresyon analizinin ciktisinda yer alan nesne parametre kestirimlerini, artiklari, yordanan degerleri liste seklinde tutmaktadir.

R’da lm() fonksiyonlari regresyon icin kullanilir.

~ isareti oncesine bagimli degiskenler, sonrasina ise bagimsiz degiskenler eklenerek model kurulur.

require(stats); require(graphics)
fm1 <- lm(sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings)
summary(fm1)
## 
## Call:
## lm(formula = sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.2422 -2.6857 -0.2488  2.4280  9.7509 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 28.5660865  7.3545161   3.884 0.000334 ***
## pop15       -0.4611931  0.1446422  -3.189 0.002603 ** 
## pop75       -1.6914977  1.0835989  -1.561 0.125530    
## dpi         -0.0003369  0.0009311  -0.362 0.719173    
## ddpi         0.4096949  0.1961971   2.088 0.042471 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.803 on 45 degrees of freedom
## Multiple R-squared:  0.3385, Adjusted R-squared:  0.2797 
## F-statistic: 5.756 on 4 and 45 DF,  p-value: 0.0007904

Listeler

Regresyon sonuclain yer aldigi fm nesnesi bilesenleri

str(fm1)
## List of 12
##  $ coefficients : Named num [1:5] 28.566087 -0.461193 -1.691498 -0.000337 0.409695
##   ..- attr(*, "names")= chr [1:5] "(Intercept)" "pop15" "pop75" "dpi" ...
##  $ residuals    : Named num [1:50] 0.864 0.616 2.219 -0.698 3.553 ...
##   ..- attr(*, "names")= chr [1:50] "Australia" "Austria" "Belgium" "Bolivia" ...
##  $ effects      : Named num [1:50] -68.38 -14.29 7.3 -3.52 -7.94 ...
##   ..- attr(*, "names")= chr [1:50] "(Intercept)" "pop15" "pop75" "dpi" ...
##  $ rank         : int 5
##  $ fitted.values: Named num [1:50] 10.57 11.45 10.95 6.45 9.33 ...
##   ..- attr(*, "names")= chr [1:50] "Australia" "Austria" "Belgium" "Bolivia" ...
##  $ assign       : int [1:5] 0 1 2 3 4
##  $ qr           :List of 5
##   ..$ qr   : num [1:50, 1:5] -7.071 0.141 0.141 0.141 0.141 ...
##   .. ..- attr(*, "dimnames")=List of 2
##   .. .. ..$ : chr [1:50] "Australia" "Austria" "Belgium" "Bolivia" ...
##   .. .. ..$ : chr [1:5] "(Intercept)" "pop15" "pop75" "dpi" ...
##   .. ..- attr(*, "assign")= int [1:5] 0 1 2 3 4
##   ..$ qraux: num [1:5] 1.14 1.17 1.16 1.15 1.05
##   ..$ pivot: int [1:5] 1 2 3 4 5
##   ..$ tol  : num 1e-07
##   ..$ rank : int 5
##   ..- attr(*, "class")= chr "qr"
##  $ df.residual  : int 45
##  $ xlevels      : Named list()
##  $ call         : language lm(formula = sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings)
##  $ terms        :Classes 'terms', 'formula'  language sr ~ pop15 + pop75 + dpi + ddpi
##   .. ..- attr(*, "variables")= language list(sr, pop15, pop75, dpi, ddpi)
##   .. ..- attr(*, "factors")= int [1:5, 1:4] 0 1 0 0 0 0 0 1 0 0 ...
##   .. .. ..- attr(*, "dimnames")=List of 2
##   .. .. .. ..$ : chr [1:5] "sr" "pop15" "pop75" "dpi" ...
##   .. .. .. ..$ : chr [1:4] "pop15" "pop75" "dpi" "ddpi"
##   .. ..- attr(*, "term.labels")= chr [1:4] "pop15" "pop75" "dpi" "ddpi"
##   .. ..- attr(*, "order")= int [1:4] 1 1 1 1
##   .. ..- attr(*, "intercept")= int 1
##   .. ..- attr(*, "response")= int 1
##   .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
##   .. ..- attr(*, "predvars")= language list(sr, pop15, pop75, dpi, ddpi)
##   .. ..- attr(*, "dataClasses")= Named chr [1:5] "numeric" "numeric" "numeric" "numeric" ...
##   .. .. ..- attr(*, "names")= chr [1:5] "sr" "pop15" "pop75" "dpi" ...
##  $ model        :'data.frame':   50 obs. of  5 variables:
##   ..$ sr   : num [1:50] 11.43 12.07 13.17 5.75 12.88 ...
##   ..$ pop15: num [1:50] 29.4 23.3 23.8 41.9 42.2 ...
##   ..$ pop75: num [1:50] 2.87 4.41 4.43 1.67 0.83 2.85 1.34 0.67 1.06 1.14 ...
##   ..$ dpi  : num [1:50] 2330 1508 2108 189 728 ...
##   ..$ ddpi : num [1:50] 2.87 3.93 3.82 0.22 4.56 2.43 2.67 6.51 3.08 2.8 ...
##   ..- attr(*, "terms")=Classes 'terms', 'formula'  language sr ~ pop15 + pop75 + dpi + ddpi
##   .. .. ..- attr(*, "variables")= language list(sr, pop15, pop75, dpi, ddpi)
##   .. .. ..- attr(*, "factors")= int [1:5, 1:4] 0 1 0 0 0 0 0 1 0 0 ...
##   .. .. .. ..- attr(*, "dimnames")=List of 2
##   .. .. .. .. ..$ : chr [1:5] "sr" "pop15" "pop75" "dpi" ...
##   .. .. .. .. ..$ : chr [1:4] "pop15" "pop75" "dpi" "ddpi"
##   .. .. ..- attr(*, "term.labels")= chr [1:4] "pop15" "pop75" "dpi" "ddpi"
##   .. .. ..- attr(*, "order")= int [1:4] 1 1 1 1
##   .. .. ..- attr(*, "intercept")= int 1
##   .. .. ..- attr(*, "response")= int 1
##   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
##   .. .. ..- attr(*, "predvars")= language list(sr, pop15, pop75, dpi, ddpi)
##   .. .. ..- attr(*, "dataClasses")= Named chr [1:5] "numeric" "numeric" "numeric" "numeric" ...
##   .. .. .. ..- attr(*, "names")= chr [1:5] "sr" "pop15" "pop75" "dpi" ...
##  - attr(*, "class")= chr "lm"

Listeler

psych paketinde fa() fonksiyonu ile gerceklestirilen analiz sonuclari

library(psych)
wls <- fa(Harman74.cor$cov,4,fm="wls") 
## Loading required namespace: GPArotation
str(wls)
## List of 44
##  $ residual     : num [1:24, 1:24] 0.4452 -0.0348 -0.0152 0.0401 0.0145 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:24] "VisualPerception" "Cubes" "PaperFormBoard" "Flags" ...
##   .. ..$ : chr [1:24] "VisualPerception" "Cubes" "PaperFormBoard" "Flags" ...
##  $ dof          : num 186
##  $ ENull        : num NA
##  $ chi          : num NA
##  $ rms          : num 0.0408
##  $ nh           : logi NA
##  $ EPVAL        : num NA
##  $ crms         : num 0.0497
##  $ EBIC         : num NA
##  $ ESABIC       : num NA
##  $ fit          : num 0.903
##  $ fit.off      : num 0.984
##  $ sd           : num 0.04
##  $ factors      : num 4
##  $ complexity   : Named num [1:24] 1.03 1.04 1.23 1.25 1.05 ...
##   ..- attr(*, "names")= chr [1:24] "VisualPerception" "Cubes" "PaperFormBoard" "Flags" ...
##  $ n.obs        : logi NA
##  $ PVAL         : logi NA
##  $ objective    : num 1.72
##  $ criteria     : Named num [1:3] 1.72 NA NA
##   ..- attr(*, "names")= chr [1:3] "objective" "" ""
##  $ Call         : language fa(r = Harman74.cor$cov, nfactors = 4, fm = "wls")
##  $ null.model   : num 11.4
##  $ null.dof     : num 276
##  $ r.scores     : num [1:4, 1:4] 1 0.484 0.339 0.491 0.484 ...
##  $ R2           : num [1:4] 0.918 0.815 0.859 0.766
##  $ valid        : num [1:4] 0.933 0.862 0.879 0.851
##  $ score.cor    : num [1:4, 1:4] 1 0.627 0.485 0.493 0.627 ...
##  $ weights      : num [1:24, 1:4] -0.02148 -0.00436 0.02699 0.00951 0.16055 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:24] "VisualPerception" "Cubes" "PaperFormBoard" "Flags" ...
##   .. ..$ : chr [1:4] "WLS1" "WLS3" "WLS2" "WLS4"
##  $ rotation     : chr "oblimin"
##  $ communality  : Named num [1:24] 0.555 0.227 0.344 0.349 0.642 ...
##   ..- attr(*, "names")= chr [1:24] "VisualPerception" "Cubes" "PaperFormBoard" "Flags" ...
##  $ communalities: Named num [1:24] 0.561 0.22 0.356 0.349 0.648 ...
##   ..- attr(*, "names")= chr [1:24] "VisualPerception" "Cubes" "PaperFormBoard" "Flags" ...
##  $ uniquenesses : Named num [1:24] 0.445 0.773 0.656 0.651 0.358 ...
##   ..- attr(*, "names")= chr [1:24] "VisualPerception" "Cubes" "PaperFormBoard" "Flags" ...
##  $ values       : num [1:24] 7.646 1.692 1.221 0.915 0.403 ...
##  $ e.values     : num [1:24] 8.14 2.1 1.69 1.5 1.03 ...
##  $ loadings     : 'loadings' num [1:24, 1:4] 0.0427 0.056 0.0874 0.1782 0.7639 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:24] "VisualPerception" "Cubes" "PaperFormBoard" "Flags" ...
##   .. ..$ : chr [1:4] "WLS1" "WLS3" "WLS2" "WLS4"
##  $ model        : num [1:24, 1:24] 0.555 0.353 0.418 0.428 0.306 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:24] "VisualPerception" "Cubes" "PaperFormBoard" "Flags" ...
##   .. ..$ : chr [1:24] "VisualPerception" "Cubes" "PaperFormBoard" "Flags" ...
##  $ fm           : chr "wls"
##  $ rot.mat      : num [1:4, 1:4] 0.4887 -0.8531 -0.6178 -0.0472 0.2601 ...
##  $ Phi          : num [1:4, 1:4] 1 0.41 0.295 0.408 0.41 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:4] "WLS1" "WLS3" "WLS2" "WLS4"
##   .. ..$ : chr [1:4] "WLS1" "WLS3" "WLS2" "WLS4"
##  $ Structure    : 'loadings' num [1:24, 1:4] 0.361 0.241 0.29 0.369 0.794 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:24] "VisualPerception" "Cubes" "PaperFormBoard" "Flags" ...
##   .. ..$ : chr [1:4] "WLS1" "WLS3" "WLS2" "WLS4"
##  $ method       : chr "regression"
##  $ R2.scores    : Named num [1:4] 0.918 0.815 0.859 0.766
##   ..- attr(*, "names")= chr [1:4] "WLS1" "WLS3" "WLS2" "WLS4"
##  $ r            : num [1:24, 1:24] 1 0.318 0.403 0.468 0.321 0.335 0.304 0.332 0.326 0.116 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:24] "VisualPerception" "Cubes" "PaperFormBoard" "Flags" ...
##   .. ..$ : chr [1:24] "VisualPerception" "Cubes" "PaperFormBoard" "Flags" ...
##  $ fn           : chr "fa"
##  $ Vaccounted   : num [1:5, 1:4] 3.996 0.166 0.166 0.348 0.348 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:5] "SS loadings" "Proportion Var" "Cumulative Var" "Proportion Explained" ...
##   .. ..$ : chr [1:4] "WLS1" "WLS3" "WLS2" "WLS4"
##  - attr(*, "class")= chr [1:2] "psych" "fa"

Listeler

Asagidaki bilesenlere sahip listeyi olusturunuz.

## $a
## [1] x x y y
## Levels: x y
## 
## $b
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
## 
## $c
## $c[[1]]
## [1] 1
## 
## $c[[2]]
## [1] 2
## 
## $c[[3]]
## [1] 3

KAYNAKCA

Atar, B., Atalay Kabasakal, K, Ünsal Özberk, E. B., Özberk, E. H. Ve Kıbrıslıoğlu Uysal, N. (2020).  R ile Veri Analizi ve Psikometri Uygulamaları, Editör, Pegem Akademi, Ankara.

Odev

Eklenecektir.