Listeler

Yaşam Bilimlerinde Veri Analizi

Emrah Kırdök, Ph.D.

2024-04-03

Listeler

## Liste oluşturma

Şimdi gelin önceki derslerde oluşturduğumuz veri yapılarını tekrar oluşturalım ve bir liste içerisinde saklayalım:

Table 1: Hayali veri setimizdeki bitkiler
Bitki İsmi Yaprak Uzunluğu (cm) Deney Koşulları
bitki1 2.3 Karanlık
bitki2 3.4 Aydınlık
bitki3 4.5 Aydınlık
bitki4 1.2 Karanlık
bitki5 3.4 Aydınlık
bitki6 - Karanlık
bitki7 1.8 Karanlık
bitki8 6.3 Aydinlik
bitki9 2.1 Karanlık
bitki10 - Karanlık

Liste oluşturma

veri <- data.frame(bitki_ismi = c("bitki1", "bitki2", 
                                    "bitki3", "bitki4", 
                                    "bitki5", "bitki6", 
                                    "bitki7","bitki8", 
                                    "bitki9", "bitki10"),
                    yaprak_uzunlugu = c(2.3, 3.4, 4.5, 1.2, 3.4, 
                                            NA, 1.8, 6.3, 2.1, NA),
                    deney_kosullari = factor(c("karanlik", "aydinlik", 
                                                    "aydinlik", "karanlik", 
                                                    "aydinlik", "karanlik", 
                                                    "karanlik", "aydinlik", 
                                                    "karanlik", "karanlik"))
)

Liste oluşturma

yaprak_uzunlugu <- c(2.3, 3.4, 4.5, 1.2, 3.4, 
                    3, 1.8, 6.3, 2.1, 5)

ornek_matris <- matrix(yaprak_uzunlugu, nrow=5, ncol=2)
isimler <- c("Ali", "Deniz", "Fatma", "Emre", "Volkan", "Onur")

Liste oluşturma

Şimdi bütün bu bilgileri bir liste içerisinde toplayalım:

liste <- list(veri, ornek_matris, isimler)

Şimdi listeye bakalım:

liste

Liste oluşturma

[[1]]
   bitki_ismi yaprak_uzunlugu deney_kosullari
1      bitki1             2.3        karanlik
2      bitki2             3.4        aydinlik
3      bitki3             4.5        aydinlik
4      bitki4             1.2        karanlik
5      bitki5             3.4        aydinlik
6      bitki6              NA        karanlik
7      bitki7             1.8        karanlik
8      bitki8             6.3        aydinlik
9      bitki9             2.1        karanlik
10    bitki10              NA        karanlik

[[2]]
     [,1] [,2]
[1,]  2.3  3.0
[2,]  3.4  1.8
[3,]  4.5  6.3
[4,]  1.2  2.1
[5,]  3.4  5.0

[[3]]
[1] "Ali"    "Deniz"  "Fatma"  "Emre"   "Volkan" "Onur"  

Listelerde indisleme

Listelerde indisleme biraz farklıdır.

length(liste)
[1] 3

İstersek, liste ögelerinin isimlerini inceleyebiliriz ya da isim atayabiliriz:

names(list)
NULL

Listelerde indisleme

liste <- list(veri=veri, ornek_matris = ornek_matris, isimler = isimler)
names(liste)
[1] "veri"         "ornek_matris" "isimler"     

Ya da şu şekilde atayabiliriz:

names(liste) <- c("veri", "ornek_matris", "isimler")

Liste içindeki elemana erişme [[]]

İlk yöntem bize liste elemanlarına erişim ve bu elemanlar içinde işlem yapma olanağı sağlar.

liste[[3]]
[1] "Ali"    "Deniz"  "Fatma"  "Emre"   "Volkan" "Onur"  

Şimdi ise doğrudan vektörü geri döndürdük. Bu vektör içinde işlem yapabiliriz artık. Mesela bu vektörün ikinci elemanına erişebiliriz:

liste[[3]][2]
[1] "Deniz"

Liste içindeki elemana erişme [[]]

Şimdi birinci elemana erişelim:

liste[[1]]
   bitki_ismi yaprak_uzunlugu deney_kosullari
1      bitki1             2.3        karanlik
2      bitki2             3.4        aydinlik
3      bitki3             4.5        aydinlik
4      bitki4             1.2        karanlik
5      bitki5             3.4        aydinlik
6      bitki6              NA        karanlik
7      bitki7             1.8        karanlik
8      bitki8             6.3        aydinlik
9      bitki9             2.1        karanlik
10    bitki10              NA        karanlik

İstersek bu veri çerçevesi içinde işlemler yapabiliriz:

liste[[1]][4,2]
[1] 1.2

Liste içindeki elemana erişme [[]]

Eğer listemizin isimleri varsa, doğrudan bu isimleri kullanabiliriz:

liste$veri
   bitki_ismi yaprak_uzunlugu deney_kosullari
1      bitki1             2.3        karanlik
2      bitki2             3.4        aydinlik
3      bitki3             4.5        aydinlik
4      bitki4             1.2        karanlik
5      bitki5             3.4        aydinlik
6      bitki6              NA        karanlik
7      bitki7             1.8        karanlik
8      bitki8             6.3        aydinlik
9      bitki9             2.1        karanlik
10    bitki10              NA        karanlik

Bakın, tekrar liste elemanına doğrudan eriştik. İstersek yukarıdaki işlemin aynısını yapabiliriz:

Liste içindeki elemana erişme [[]]

liste$veri[4,2]
[1] 1.2

Alt liste geri döndürme []

Bu yöntemde, elimizdeki listeden yeni bir alt liste oluşturuyoruz. Yani indisleme yaptıktan sonra elde ettiğimiz veri yapısı da bir listedir.

liste[3]
$isimler
[1] "Ali"    "Deniz"  "Fatma"  "Emre"   "Volkan" "Onur"  

Bu bize bir alt liste geri döndürdü. Ancak üçünücü eleman olan vektöre erişemiyoruz şu anda:

liste[3][2]
$<NA>
NULL

Bakın hata mesajı aldık. Çünkü elimizde bir alt liste var.

Alt liste geri döndürme []

İstersek, birden fazla liste elemanını seçebiliriz:

liste[1:2]
$veri
   bitki_ismi yaprak_uzunlugu deney_kosullari
1      bitki1             2.3        karanlik
2      bitki2             3.4        aydinlik
3      bitki3             4.5        aydinlik
4      bitki4             1.2        karanlik
5      bitki5             3.4        aydinlik
6      bitki6              NA        karanlik
7      bitki7             1.8        karanlik
8      bitki8             6.3        aydinlik
9      bitki9             2.1        karanlik
10    bitki10              NA        karanlik

$ornek_matris
     [,1] [,2]
[1,]  2.3  3.0
[2,]  3.4  1.8
[3,]  4.5  6.3
[4,]  1.2  2.1
[5,]  3.4  5.0

Alt liste geri döndürme []

Şu örnekleri deneyin mutlaka:

liste[[2]]
liste[2]
liste[[2]][3]
liste[2][3]
liste[[1:3]]
liste[1:3]
liste[["isimler"]]
liste$isimler
liste["isimler"]

Sonuçlar

liste[[2]]
     [,1] [,2]
[1,]  2.3  3.0
[2,]  3.4  1.8
[3,]  4.5  6.3
[4,]  1.2  2.1
[5,]  3.4  5.0

Sonuçlar

liste[2]
$ornek_matris
     [,1] [,2]
[1,]  2.3  3.0
[2,]  3.4  1.8
[3,]  4.5  6.3
[4,]  1.2  2.1
[5,]  3.4  5.0

Sonuçlar

liste[[2]][3]
[1] 4.5

Sonuçlar

liste[2][3]
$<NA>
NULL

Sonuçlar

liste[[1:3]]
[1] 4.5

Sonuçlar

liste[1:3]
$veri
   bitki_ismi yaprak_uzunlugu deney_kosullari
1      bitki1             2.3        karanlik
2      bitki2             3.4        aydinlik
3      bitki3             4.5        aydinlik
4      bitki4             1.2        karanlik
5      bitki5             3.4        aydinlik
6      bitki6              NA        karanlik
7      bitki7             1.8        karanlik
8      bitki8             6.3        aydinlik
9      bitki9             2.1        karanlik
10    bitki10              NA        karanlik

$ornek_matris
     [,1] [,2]
[1,]  2.3  3.0
[2,]  3.4  1.8
[3,]  4.5  6.3
[4,]  1.2  2.1
[5,]  3.4  5.0

$isimler
[1] "Ali"    "Deniz"  "Fatma"  "Emre"   "Volkan" "Onur"  

Sonuçlar

liste[["isimler"]]
[1] "Ali"    "Deniz"  "Fatma"  "Emre"   "Volkan" "Onur"  

Sonuçlar

liste$isimler
[1] "Ali"    "Deniz"  "Fatma"  "Emre"   "Volkan" "Onur"  

Sonuçlar

liste["isimler"]
$isimler
[1] "Ali"    "Deniz"  "Fatma"  "Emre"   "Volkan" "Onur"