vektor1 <- c(12, 43, 45)
8 Vektörler
Ancak dikkat ederseniz sadece tek bir eleman üzerinde işlemlerimizi gerçekleştirdik. Gerçek bir veri analizi senaryosunda ise tek bir örnek değil, bir grup örnek ile çalışmamız gerekmektedir.
8.1 Nasıl vektör oluşturulur?
R üzerinde farklı veri yapıları bulunmaktadır. Bunlarda bir tanesi vektörler olarak adlandırılır. Vektörler, kısaca belli bir tipte veri tipini içeren listeler olarak tanımlanabilir. Bir vektör oluşturmak istiyorsanız c()
fonksiyonunu kullanmanız gerekmektedir:
Oluşturduğunuz vektor1
isimli vektör, üç tane elemana sahiptir. Bu elemanları dikkat ederseniz ,
ile ayırdık.
İsterseniz karakter vektörleri de oluşturabilirsiniz:
vektor2 <- c("bitki1", "bitki2", "bitki3")
Ya da mantıksal vektörler:
vektor3 <- c(TRUE, FALSE, TRUE, FALSE)
Ya da faktör vektörleri:
Dikkat ederseniz önce c()
fonskiyonu ile vektör oluşturduk, ardından factor
fonksiyonu ile faktör’e çevirdik.
İstersek iki farklı vektörü birleştirebiliriz. Önce iki farklı vektör oluşturalım:
Şimdi bu iki vektörü birleştirelim:
yeni_vektor <- c(x, y)
Bu vektörü ekrana yazdıralım:
yeni_vektor
[1] 12 34 56 39 45 67
Dikkat ederseniz, değişken isiminde birden fazla kelime varsa, bu kelimeleri _
ile ayırdık. Siz de buna dikkat edin lütfen.
Acaba iki farklı tipte vektörü birleştirirseniz ne olur? Mesela bir karakter vektörü ile bir sayı vektörünü birleştirmeyi deneseniz olur mu?
Dikkat ederseniz, artık bir karakter vektörümüz oldu. Farklı veri tiplerini birleştiriken dikkat etmelisiniz. Beklemediğiniz sonuçlarla karşılaşabilirsiniz.
8.2 Vektör oluşturma üzerine örnekler
Aşağıdaki tablo, hayali bir deneyi tarif etmektedir. Bir türe ait 10 tane bitkinin, farklı ışık koşullarında yaprak uzunlukları ölçümleri alınmıştır. Acaba her sütundan bir vektör oluşturabilir miyiz? Bu örnek için Tablo 8.1’e bakınız. Dikkat edin ölçüm alınamayan noktalar var.
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 |
Öncelikle bitki isimleri için bir karakter vektörü oluşturalım:
bitki_ismi <- c("bitki1", "bitki2", "bitki3", "bitki4", "bitki5",
"bitki6", "bitki7","bitki8", "bitki9", "bitki10")
Şimdi ise yaprak uzunluğu için bir sayı vektörü oluşturalım. Burada dikkat ediniz, belirlenemyen ölçümlere NA
ekliyoruz!
yaprak_uzunlugu <- c(2.3, 3.4, 4.5, 1.2, 3.4,
NA, 1.8, 6.3, 2.1, NA)
Bu karakter, farklı veri tipleri ile bir vektör içerisinde kullanılabilir.
Son olarak deney koşulları için bir vektör oluşturmamız gerekli. Dikkat edin, deney koşulları aslında bir kategori ifade ediyor. Bu nedenle deney koşulları vektörü aslında bir faktör vektörü olmalı:
Gerçekten faktör vektörü oluşturmuşmuyuz kontrol edelim:
str(deney_kosullari)
Factor w/ 2 levels "aydinlik","karanlik": 2 1 1 2 1 2 2 1 2 2
Burada levels olarak belirtilen aslında faktör seviyeleri. aydinlik
ve karanlik
olmak üzere iki farklı seviye bulunmakta ve bu seviyeler 1
ve 2
olarak kodlanmış durumdadır. R üzerinde faktörler, öntanımlı olarak alfabetik sıraya göre kodlanmaktadır.
8.2.1 Vektörün uzunluğunu öğrenmek
Oluşturduğumuz vektörün uzunluğunu elde etmek için ise length
fonksiyonunu kullanabiliriz:
length(yaprak_uzunlugu)
[1] 10
8.3 Vektör elemanlarına isim eklemek
Eğer istersek, her vektör elemanına bir isim atayabiliriz.
names(yaprak_uzunlugu) <- bitki_ismi
Atanmış isimleri elde edebiliriz:
names(yaprak_uzunlugu)
[1] "bitki1" "bitki2" "bitki3" "bitki4" "bitki5" "bitki6" "bitki7"
[8] "bitki8" "bitki9" "bitki10"
Ancak dikkat edin, kullandığınız her iki vektörün aynı uzunlukta olması gereklidir.
8.4 Vektörlerde indis kullanımı
Peki vektör içerisindeki elemanlara nasıl erişiriz? Bunun için indisler kullanmamız gereklidir. Mesela yukarıda oluşturduğumuz yaprak_uzunlugu
vektörü üzerinde ikinci elemanı alalım:
yaprak_uzunlugu[2]
bitki2
3.4
Şimdi de ikinci ve dördüncü elemanlar arasındaki verileri geri döndürelim:
yaprak_uzunlugu[2:4]
bitki2 bitki3 bitki4
3.4 4.5 1.2
:
operatörü, iki sayı arasındaki sayılardan bir vektör oluşturur (daha ayrıntılı bilgi için Bölüm 8.5):
1:16
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Eğer vektörümüzdeki elemanların isimleri varsa, bu isimleri de indis olarak kullanabiliriz.
yaprak_uzunlugu["bitki2"]
bitki2
3.4
8.4.1 Vektörleri filtrelemek
Eğer istersek, vektörler içerisinde işlem de yapabiliriz. Mesela yaprak uzunluğu 3’den büyük olan bitkileri geri döndürelim:
yaprak_uzunlugu > 3
bitki1 bitki2 bitki3 bitki4 bitki5 bitki6 bitki7 bitki8 bitki9 bitki10
FALSE TRUE TRUE FALSE TRUE NA FALSE TRUE FALSE NA
Bir mantıksal vektör elde ettik. İstersek bu vektörü, başka bir vektöre indis olarak da kullanabiliriz:
bitki_ismi[yaprak_uzunlugu > 3]
[1] "bitki2" "bitki3" "bitki5" NA "bitki8" NA
8.4.2 Vektörlerden eleman çıkartmak
Eğer -
işareti ile eksi indis verirsek, o elemanı vektörden çıkartabiliriz:
yaprak_uzunlugu[-5]
bitki1 bitki2 bitki3 bitki4 bitki6 bitki7 bitki8 bitki9 bitki10
2.3 3.4 4.5 1.2 NA 1.8 6.3 2.1 NA
Dikkat edin, burada yaprak_uzunlugu
vektörünün beşinci elemanı doğrudan çıkartılmadı, sadece beşinci elemanı çıkartılmış bir vektör geri döndürüldü.
8.5 seq
fonksiyonu ile çalışmalar
Bu fonksiyon sayesinde iki farklı sayı arasında, belirli aralıklara göre bir sayı vektörü oluşturulabilir.
Mesela 2 ile 16 arasında 1 artışla bir vektör oluşturalım:
seq(2,16)
[1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Ya da kısaca bu şekilde de oluşturabiliriz:
2:16
[1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Artış mikarını kendimiz belirliyebiliriz. Mesela her adımda 2 sayı artış olsun:
seq(2, 16, 2)
[1] 2 4 6 8 10 12 14 16
8.6 Sonuç
Bu kısım kapsamında aşağıdaki konular önemlidir: