Dr. Kubra Atalay Kabasakal
Kasim 2021
R lineer cebir temelli bir programlama dilidir.
Vektorler tek boyutludur.
R’da vektorler birlestirmek (combine/concatenate) anlamina gelen c() fonksiyonu ile olusturulmaktadir.
R da veriler bir araya gelerek veri yapilarini olusturur.
## [1] 1 2 3
# sayisal_vektor nesnesinin turu nedir?
# tam sayi (integer), dogal sayi (double)?
# sorgulayin, diger ture donusturun.## [1] "a" "b" "c"
## [1] TRUE TRUE FALSE
Vektor uzunlugu length() fonksiyonu ile vektor turleri ise class(), mode() ya da typeof() fonksiyonlari ise tur belirlemek icin kullanilmaktadir.
# Vektorler bir veya daha fazla elemandan olusabilmektedir.
a <- 1 # tek elemandan olusur.
# Vektor uzunlugunu ogrenmek icin length() fonksiyonu
length(a)## [1] 1
## [1] 55
## [1] 3628800
# bir vektorundeki verilerin kumulatif toplamlarinin ve carpimlarinin alinmasi
cumsum(x); cumprod(x)## [1] 1 3 6 10 15 21 28 36 45 55
## [1] 1 2 6 24 120 720 5040 40320 362880
## [10] 3628800
## [1] 1 2 3 4 5 6 7 8 9 10
# bir vektorundeki verilerin buyukten kucuge siralanmasi
# bir vektorunun elemanlarin siralarinin tersine cevrilmesi
rev(x)## [1] 10 9 8 7 6 5 4 3 2 1
## [1] 3.02765
## [1] 10
## [1] 1
## [1] 10
## [1] 1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 3.25 5.50 5.50 7.75 10.00
Vektorlerden eleman sirasi, isim ve mantiksal operatorler olmak uzere uc farkli yolla eleman secilebilir.
ad <- c("Ali","Elif","Su","Deniz","Aras","Berk","Can","Ece","Efe","Arda")
# ad vektorunun 1. elemanini secilmesi "[]" operatoru
ad[1]## [1] "Ali"
## [1] "Aras"
## [1] "Arda"
# birden fazla eleman secimi
# DIKKAT!
# c() fonksiyonu kullanilmazsa, hata mesaji ad[(1,5,8)]
ad[c(1,5,8)]## [1] "Ali" "Aras" "Ece"
## [1] "Elif" "Su" "Deniz" "Aras" "Berk" "Can" "Ece" "Efe" "Arda"
## [1] "Elif" "Su" "Deniz" "Berk" "Can" "Ece" "Efe" "Arda"
## [1] "Su" "Deniz" "Aras"
## [1] "Ali" "Elif" "Su" "Deniz" "Aras" "Berk" "Can" "Ece" "Efe"
## [10] "Arda" "Asu"
## [1] "Ali" "Elif" "Su" "Deniz" "Aras" "Berk" "Can" "Ece" "Efe"
## [10] "Arda" "Asu" "Ahu" "Han"
# Vektorun ortasina eleman eklenmesi
# ?append() fonksiyonu ile yapilabilir. Fonksiyon yardim sayfasini inceleyiniz.
(ad <- append(ad, "Taha", after = 3))## [1] "Ali" "Elif" "Su" "Taha" "Deniz" "Aras" "Berk" "Can" "Ece"
## [10] "Efe" "Arda" "Asu" "Ahu" "Han"
## [1] "Ali" "Elif" "Su" "Taha" "Deniz" "Selim" "Berk" "Can" "Ece"
## [10] "Efe" "Arda" "Asu" "Ahu" "Han"
10 kisiden olusan bir gruptaki kisilerinin boy uzunluklari icin ise asagidaki vektor olusturulmustur.
Nesneye deger atama islemi assign() fonksiyonu ile de yapilabilmektedir.
# atama operatoru <- yerine assign fonksiyonu kullanimi
# eksik veri icin NA
(assign("v1", c(160,165,170,155,167,162,169,158,160,NA)))## [1] 160 165 170 155 167 162 169 158 160 NA
## [1] 50 55 57 50 48 65 58 62 45 NA
Eger elimizdeki vektor isimlendirilmis bir vektor ise eleman secimini isimle de yapabiliriz.
## [1] 160 165 170 155 167 162 169 158 160 164
## NULL
## Ali Elif Su Deniz Aras Berk Can Ece Efe Arda
## 160 165 170 155 167 162 169 158 160 164
## Ali
## 160
## [1] 160 165 170 155 167 162 169 158 160 164
## [1] 160 165 170 155 167 162 169 158 160 164
## [1] TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE TRUE TRUE
# Boyu ortalamadan uzun olanlarin uzun_boy vektorune atanmasi
uzun_boy <- boy[boy>mean(boy)]
# Uzun_boy vektorunun yazdirilmasi
uzun_boy## [1] 165 170 167 169 164
## [1] 1 9
## [1] 167
# Boyu 167 cm'den uzun olan veya kilosu 60 kg'dan fazla olanlarin belirlenmesi
boy[boy>167 | kilo>60]## [1] 170 162 169 158
Vektor olusturmanin farkli yollari bulunmaktadir.
En basit yolu iki nokta ":" operatorunu kullanmaktir.
## [1] 0 1 2 3 4 5 6 7 8 9
## [1] 9 8 7 6 5 4 3 2 1 0
seq()Belirli bir kurala gore sayi dizileri olusturmak icin ise seq(), rep()ve paste() fonksiyonlarindan yararlanilabilir. Ilk olarak bu fonksiyonlarin yardim sayfalarini inceleyelim.
# 1'den 10'a kadar birer birer artan sayilardan dizi olusturulmasi
# ...................
# seq() fonksiyonu arguman isimleri kullanilmadan calistirilmasi
# .................
# ayni ciktiyi tek bir argumanla elde edebilir misiniz?
# ....................
# length argumani ile istenilen uzunlukta vektor olusturulmasi
# .......................
# Artis miktarinin by argumani ile ayarlanmasi
# .............................
# Belirli bir aralikta kac elemanin yer alacaginin length.out argumani ile belirlenmesirep() fonksiyonu icin ornekler
## [1] 3 4 5 3 4 5 3 4 5
## [1] 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
Ciktiyi elde edecek kodlar hazirlayiniz.
## [1] 3 3 3 5 5 5 7 7 7
Ciktiyi elde edecek kodlar hazirlayiniz.
## [1] 3 3 3 5 5 5 7 7 7 3 3 3 5 5 5 7 7 7 3 3 3 5 5 5 7 7 7
Ciktiyi elde edecek kodlar hazirlayiniz.
## [1] 1 1 2 2 3 3 4 4
Ciktiyi elde edecek kodlar hazirlayiniz.
## [1] 1 2 2 3 3 3
paste()fonksiyonu ciktisi her zaman icin karakterdir.
## [1] "1" "2" "3" "4"
## [1] "character"
Ciktiyi elde edecek kodlar hazirlayiniz.
## [1] "test 1" "test 2" "test 3" "test 4" "test 5" "test 6" "test 7"
## [8] "test 8" "test 9" "test 10"
Ciktiyi elde edecek kodlar hazirlayiniz.
## [1] "test1" "test2" "test3" "test4" "test5" "test6" "test7" "test8"
## [9] "test9" "test10"
Ciktiyi elde edecek kodlar hazirlayiniz.
## [1] "test_1_puan" "test_2_puan" "test_3_puan" "test_4_puan" "test_5_puan"
## [6] "test_6_puan" "test_7_puan" "test_8_puan" "test_9_puan" "test_10_puan"
Ciktiyi elde edecek kodlar hazirlayiniz.
## [1] "test A" "test B" "test C" "test D" "test 1" "test 2" "test 3"
Farkli fonksiyonlarla rastgele veri uretilebilir. Ornegin 0-100 arasinda 20 farkli deger elde edilmek istenilsin. Bunu yapmak icinsample(),runif() ya da rnorm() fonksiyonlarindan yararlanilabilir.
## [1] 30 66 86 76 40 92 52 70 31 84 69 99 2 43 93 7 32 56 18 90
## [1] 27.364232 35.157851 99.714875 63.269646 52.403334 46.303464 34.346245
## [8] 5.852397 68.022405 6.686886 9.474245 86.703290 35.574144 17.532907
## [15] 45.719526 37.976879 27.673968 62.470301 30.616680 31.876953
## [1] 64.28546 49.53312 59.77498 40.65678 42.90669 62.49588 43.90385 51.79838
## [9] 52.54181 50.74519 49.38912 55.19452 53.70119 75.10855 48.54096 59.00080
## [17] 64.78947 58.31075 43.25978 56.33217
Kullanilan uc fonksiyonun da yardim sayfalarini ve kullanim amaclarini inceleyiniz.
Vektorler ayni uzunlukta oldugunda, her iki vektorun elemanlari sirasi ile bire bir isleme alinmaktadir.
## [1] 4 8 12 16
## [1] 5 20 45 80
## [1] 5 5 5 5
## [1] 5 100 3375 160000
Vektorler ayni uzunlukta degilse ne olur?
## [1] 4.236068 5.162278 5.872983 6.472136
Vektorler ayni uzunlukta degilse ne olur? Eger vektor uzunlukları oranlari tam sayi degilse uyari verir.
## Warning in v4 * v5: uzun olan nesne uzunluğu kısa olan nesne uzunluğunun bir
## katı değil
## [1] 1 4 9 16 5 12
BKI vucut agirliginizin metre cinsinden boy uzunlugunun karesine bolunmesi ile elde edilmektedir. Her bir bireye ait BKI degerini hesaplayiniz.
Asagidaki tabloda yer alan uc sutun icin birer vektor olusturunuz. Ogrencilerin gecme notu her iki sinavin ortalamasi olarak hesaplanacaktir. Bu ogrencilerin gecme notlarini hesaplayiniz. Gecme notlarinin betimsel istatistiklerini hesaplayiniz.
| Ogrenci | Vize | Final |
|---|---|---|
| Ogrenci1 | 50 | 45 |
| Ogrenci2 | 55 | 65 |
| Ogrenci3 | 60 | 85 |
| Ogrenci4 | 70 | 90 |
| Ogrenci5 | 80 | 85 |
Soru 1: Birden n’e kadar olan sayilarin toplamini hesaplayan fonksiyon yazimi toplam() tek argumanli fonksiyon olsurunuz. Arguman degeri 5 oldugunda 1+2+3+4+5=15 degerini versin. birden n’e kadar olan sayilarin toplami: (n*(n+1))/2
## [1] 15
Soru 2: 1’den n’ e kadar olan sayıların toplamını hesaplayan fonksiyonu argümansız olarak aşağıdaki şekilde yazmayı deneyiniz. Fonksiyonu çalıştırdığınızda ekranda/konsolda kaca kadar olan sayilarin toplami hesaplansin: yazsın, kullanıcının girdiği değere göre aşağıda çıktısı çıksın.
toplam()
kaca kadar olan sayilarin toplami hesaplansin: 10
[1] " 10 ’e kadar olan sayilarin toplami: 55
Soru 3: Yazilan kare_toplam() fonksiyonu 1’den n’e kadar olan sayilarin karelerinin toplamini versin. 1 + 2^2 + …+ n^2
## [1] 385
## [1] 1240
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
datacamp ya da benzeri sitelerden R çalışmaları yapabilirsiniz.
R03 ve R04’te gecen tüm alıştırmaları yapınız.