R Programlamada Vektörler


Merhaba R severler

Bugün dersimizde r programlamada vektörlerin işleyişi üzerinde incelemeler yapacağız. Vektör bir r dili nesnesi olup logical, integer, doble, complex, character ve raw olmak üzere altı farklı çeşidi mevcuttur. Aslında r programına girilen her bir komut satırı bir vektörü ifade etmektedir. Örneğin;

print(2.5)

Yukarıdaki komut satırı ekrana “2.5” yazdırmaktadır ve aslında bu bir vektördür. Bu tür vektörlere basit eleman vektörü denilebilir.

Çoklu Eleman Vektörü ( Multiple Elements Vector)

Bu vektör tipi bir kolondan oluşmaktadır. Örneğin;

v=4:10

Yukarıdaki komut 4’ten 10’a kadar sayı dizisi oluşturmaktadır. Elbette bu sayı dizisini kayan noktalı sayı şeklinde de tanımlayabiliriz.

v <- 3.8:11.4

print(v)

Sıralama Operatörü (Sequence Operator)

Bu operatörü elimizde bulunan bir vektörün artan şekilde sıralamasını yapmak için kullanmaktayız. Örneğin 6’dan 15’e kadar 0.4 birimle artan bir sayı dizisi oluşturalım. Bu artış birimini “by” argümanı ile belirleyebiliriz.

seq(6,15,by=0.4)

 [1]  6.0  6.4  6.8  7.2  7.6  8.0  8.4  8.8  9.2  9.6 10.0 10.4 10.8 11.2 11.6 12.0 12.4 12.8 13.2 13.6

[21] 14.0 14.4 14.8

c() fonksiyonunun kullanımı

Bu fonksiyonda logical ve numerik değerler karaktere dönüştürülmektedir. Fakat asıl kullanım amacı bir dizi oluşturmaktır.

> c('program','beyaz',5,TRUE)

[1] "program" "beyaz"   "5"       "TRUE" 

Vektör Elemanlarına Erişim

Vektör elemanlarına erişim için yine “c” komutunu kullanmaktayız fakat içerisindeki argümanları kullanım şekli biraz farklıdır. Örneğin;

t <- c("Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi","Pazar")

t[c(2,3,5)]

[1] "Salı"     "Çarşamba" "Cuma"

Yukarıda görüldüğü gibi “t” dizimize ait 2,3 ve 5 numaralı dizin elemanlarına erişim sağladık. Aynı işlemi logical şekilde vermek istersek;

> t[c(TRUE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE)]

[1] "Pazartesi" "Cumartesi"

Sonuca baktığımız zaman dizi içerisinde “true” olarak tanımlanan gün isimleri ekrana yazdırılmaktadır. Benzer şekilde dizi elemanlarını dizi içerisinden çıkarmak istersek negatif tanımlamalar yapılmalıdır.

t[c(-2,-5)]

[1] "Pazartesi" "Çarşamba"  "Perşembe"  "Cumartesi" "Pazar"

Yukarıdaki komutta dizi içerisinden 2 ve 5 numaralı elemanlar çıkarılmıştır. Farklı olarak diziyi indexleme yöntemiyle sıralayabiliriz.

> t[c(0,0,2,0,5,0,1)]

[1] "Salı"      "Cuma"      "Pazartesi"

Yukarıdaki komutta ilk iki elemanı göstermeyip sonrasında 2., 5. Ve 1. elemanı göstermesini  istedik.

Vektör İşleme

Buradaki amaç iki vektöre ait elemanları üzerinde toplama çıkarma çarpma ya da bölme işlemini uygulamak olacaktır. İki adet vektör tanımlayalım.

v1=c(2,3,4,5,6)

v2=c(7,8,9,10,11)

Buradan sonrasında basit matematiksel işlemleri vektörler üzerinde uygulayarak sonuca ulaşabiliriz.

v1+v2

[1]  9 11 13 15 17

v1-v2

[1] -5 -5 -5 -5 -5

v1*v2

[1] 14 24 36 50 66

v1/v2

[1] 0.2857143 0.3750000 0.4444444 0.5000000 0.5454545

Eğer eleman sayıları aynı olmayan iki vektör arasında işlem yapmak istersek;

v1 <- c(3,8,4,5,0,11)

v2 <- c(4,11)

V2 vektörü artık c(4,11,4,11,4,11) komutuna dönüşecektir.

v1+v2

[1] 7 19  8 16  4 22

Vektör Elemanlarını Sıralama

Başlıktan da anlaşılacağı gibi vektör elemanlarını sıralama işlemi yapacağız. Bu işlem için sort() komutu kullanılmaktadır. Örnek için hemen vektörü tanımlayalım

v <- c(3,8,4,5,0,11, -9, 304)

sıralama komutunu aşağıdaki gibi kullanabiliriz.

sort(v)

[1]  -9   0   3   4   5   8  11 304

Varsayılan olarak sıralama küçükten büyüğe yapılmaktadır. Eğer tam tersini yapmak istersek “decreasing” argümanını kullanmamız gereklidir.

sort(v, decreasing = TRUE)

[1] 304  11   8   5   4   3   0  -9

Konu ile ilgili sorularınızı chat penceresinden veya forum sayfamızdan http://scansu.net/forum/showthread.php?tid=17 sorabilirsiniz.

Yazar Kimdir?

Sıtkı Cansu, 19 Ekim 1985 yilinda Konya-Beyşehir'de dogmustur.İlk, orta ve liseyi Beyşehir'de bitirmis olup Konya-Ereğli Selçuk MYO Bilgisayar programcılığı ve Mugla Sıtkı Koçman Üniversitesi İstatistik bölümünden mezun olmustur. Çesitli yerlerde web tasarımcı ve veri tabani yöneticisi olarak çalışan yazar, son üç senedir ingilizce öğretmenliği yapmaktadir. Şu anda yüksek lisansını tamamlamak üzere Mugla Üniversitesinde öğrenim görmektedir.