Önceki dersimizde vektörleri görmüştük ve önemli bir kuraldan bahsetmiştik: “Vektörlerin içine elma ile armudu aynı anda koyamazsınız.” Hepsi ya sayı olmalıydı ya da yazı.
Ancak gerçek hayatta veriler bu kadar düzenli değildir. Bir kişinin adını (yazı), yaşını (sayı) ve öğrenci olup olmadığını (mantıksal) aynı pakette tutmak isteyebiliriz. İşte bu noktada imdadımıza Listeler (Lists) yetişir.
1. Liste Nedir ve Nasıl Oluşturulur?
Listeler, içerisinde farklı veri türlerini (karakter, sayı, mantıksal, hatta başka bir liste) barındırabilen süper kapsayıcılardır.
Örneğimizde İstanbul şehrine ait farklı türdeki bilgileri tek bir yapıda toplayalım:
Liste oluşturma: Metin, Sayı ve Mantıksal veri bir arada
istanbul <- list(“Bolge”= “Karadeniz”, “plaka”= 34, “kalabalik” = T)
Bu kodu çalıştırdığımızda R bize hata vermez. Çünkü listeler, vektörler gibi içindeki veriyi değiştirmeye (zorlamaya) çalışmaz. Her veriyi olduğu gibi, kendi kimliğiyle saklar.
2. Listeden Veri Seçmek: Köşeli Parantezlerin Gizemi
Listelerden veri çekerken R kullanıcılarının en çok kafasını karıştıran konu parantez kullanımıdır. [], [[]] ve $ işaretleri arasında kritik farklar vardır.
Bunu bir “Kargo Kutusu” gibi düşünelim.
A) Çift Köşeli Parantez [[ ]] veya İsimle Çağırma Bu yöntem, kutuyu açıp içindeki eşyayı doğrudan elinize verir.
istanbul[[“Bolge”]]
Çıktı: “Karadeniz” (Sonuç sadece bir metindir, artık liste değildir.)
istanbul[[“kalabalik”]]
Çıktı: TRUE
B) Tek Köşeli Parantez [ ] Bu yöntem, kutunun kendisini (veya listenin o dilimini) getirir. Eşya hala kutunun içindedir.
istanbul[1]
Çıktı: $Bolge “Karadeniz”
Dikkat edin, sonuç hala bir listedir. Metin değildir.
istanbul[“Bolge”]
Bu da aynı şekilde listeyi getirir.
C) Dolar İşareti $ (En Pratik Yöntem) Eğer listenizin içindeki elemanlara isim verdiyseniz (bizim örneğimizde “plaka”, “Bolge” gibi), en hızlı yöntem $ işaretidir.
istanbul$plaka
Çıktı: 34
3. Listeyi Değiştirmek ve Güncellemek
Bir listedeki hatalı veriyi değiştirmek için, o veriye ulaşıp yeni değeri atamanız yeterlidir.
Örneğin İstanbul’un bölgesi yanlış girilmiş, düzeltelim:
Bölge bilgisini güncelliyoruz
istanbul[[“Bolge”]] <- “Akdeniz”
Listeyi kontrol edelim
istanbul
Artık listeyi yazdırdığımızda “Karadeniz” yerine “Akdeniz” yazdığını göreceksiniz.
4. İsimlendirme (names) Fonksiyonu
Listenin içindeki başlıkları (etiketleri) sonradan değiştirmek isteyebiliriz. Bunun için names() fonksiyonunu kullanırız.
Tek bir ismi değiştirmek: Listenin 2. sırasındaki “plaka” ismini büyük harflerle “PLAKA” yapalım.
names(istanbul)[2] <- “PLAKA”
Birden fazla ismi değiştirmek: Aynı anda 2. ve 3. başlıkları değiştirmek istersek vektör mantığını kullanırız.
names(istanbul)[c(2,3)] <- c(“plaka” ,”nufus”)
Bu kodla birlikte; eski “PLAKA” tekrar küçük “plaka” oldu, “kalabalik” başlığı ise “nufus” olarak değişti.
Özetle
Listeler, R’ın en özgürlükçü veri yapısıdır. Farklı türleri bir arada tutar. Veriye ulaşırken $ işareti en kolayıdır, ancak teknik işlemlerde [[ ]] (içerik) ve [ ] (dilimleme) farkını bilmek hayat kurtarır.
