4 Vektörler
R lineer cebir temelli bir programlama dilidir.
Vektörler tek boyutludur.
R'da vektörler birleştirmek (combine/concatenate) anlamına gelen
c()
fonksiyonu ile oluşturulmaktadır.-
R da veriler bir araya gelerek veri yapılarını oluşturur.
- vektör (vector)
- liste (list)
- matris (matrix)
- veri seti (data.frame)
- dizi (array)
4.1 Vektör Oluşturma
(sayisal_vektor <- c(1,2,3))
## [1] 1 2 3
(karakter_vektor <- c("a","b","c")) ## cift tirnak
## [1] "a" "b" "c"
(mantiksal_vektor <- c(TRUE,TRUE,FALSE))
## [1] TRUE TRUE FALSE
4.2 Vektör İşlemleri
Vektör uzunluğu
length()
fonksiyonu ile vektör türleri iseclass()
,mode()
ya datypeof()
fonksiyonları ise tur belirlemek için kullanılmaktadır.Vektörler bir veya daha fazla elemandan oluşabilmektedir.
a <- 1 # tek elemandan oluşur.
# Vektör uzunluğunu öğrenmek icin length() fonksiyonu
length(a)
## [1] 1
x <- 1:10
bir vektöründeki verilerin toplanması
sum(x)
55bir vektöründeki verilerin çarpılması
prod(x)
3.6288^{6}bir vektöründeki verilerin küçükten büyüğe sıralanması
sort(x)
1, 2, 3, 4, 5, 6, 7, 8, 9, 10bir vektörünün elemanların sıralarının tersine çevrilmesi
rev(x)
10, 9, 8, 7, 6, 5, 4, 3, 2, 1bir vektöründeki verilerin standart sapmasının hesaplanması
sd(x)
3.0276504bir vektöründeki en büyük verinin gösterilmesi
max(x)
10bir vektöründeki en küçük verinin gösterilmesi
min(x)
1En büyük verinin vektörün kaçıncı elemanı olduğunun gösterilmesi
which.max(x)
10En küçük verinin vektörün kaçıncı elemanı olduğunun gösterilmesi
which.min(x)
1Vektörlerden eleman sırası, isim ve mantıksal operatörler olmak üzere üç farklı yolla eleman seçilebilir.
ad <- c("Ali","Elif","Su","Deniz",
"Aras","Berk","Can","Ece","Efe","Arda")
ad vektörünün 1. elemanı
ad[1]
Aliad vektörünün 5. elemanını yazdıracak kodu oluşturunuz.
ad vektörünün son elemanını yazdıracak kodu oluşturunuz.
ad vektörünün son elemanını yazdıracak kodu vektörün 10 elemanlı olduğunu bilmediğiniz de ne yaparsınız?
Vektörün sadece 1., 5. 8 elemanının yazdıracak kodu oluşturunuz.
Vektörün sadece 1. elemanının hariç tutacak kodu oluşturunuz
Vektörün 1. ve 5. elemanının hariç tutacak kodu oluşturunuz
Vektörün son üç elemanını yazdıracak kodu oluşturunuz
4.3 Vektöre eleman eklenmesi
ad[11] <- "Asu"; ad
## [1] "Ali" "Elif" "Su" "Deniz" "Aras" "Berk" "Can" "Ece" "Efe"
## [10] "Arda" "Asu"
- vektöre birden fazla eleman eklenmesi
ad[12:13] <- c("Ahu","Han"); ad
## [1] "Ali" "Elif" "Su" "Deniz" "Aras" "Berk" "Can" "Ece" "Efe"
## [10] "Arda" "Asu" "Ahu" "Han"
- Vektörün ortasına eleman eklenmesi append() fonksiyonu ile yapılabilir. Fonksiyon yardım sayfasını inceleyiniz.
(ad <- append(ad, "Taha", after = 3))
## [1] "Ali" "Elif" "Su" "Taha" "Deniz" "Aras" "Berk" "Can" "Ece"
## [10] "Efe" "Arda" "Asu" "Ahu" "Han"
- ya da
c()
fonksiyonu ile yapılabilir.
## [1] "Ali" "Elif" "Su" "Taha" "Deniz" "Selim" "Berk" "Can" "Ece"
## [10] "Efe" "Arda" "Asu" "Ahu" "Han"
4.4 Alıştırma
- 10 kişiden oluşan bir gruptaki kişilerinin boy ve kilo ölçümleri için ise aşağıdaki vektör oluşturulmuştur.
ad <- c("Ali","Elif","Su","Deniz",
"Aras","Berk","Can","Ece","Efe","Arda")
boy <- c(160,165,170,155,167,162,169,158,160,164)
kilo <-c(50,55,57,50,48,65,58,62,45,47)
- Eğer elimizdeki vektör isimlendirilmiş bir vektör ise eleman seçimini isimle de yapabiliriz.
#isimsiz boy vektoru
names(boy) # names() fonksiyonu ile isimlendirme yapılabilir.
## NULL
ad vektörünü boy vektörü ile isimlendirirken nasıl kullanabiliriz?
Arda 'nın boyunu isimlendirilmiş vektörü kullanarak
boy["Arda"]
ile yazdırırsınız
4.5 Örüntülerle Vektör Oluşturma
Vektör oluşturmanın farklı yolları bulunmaktadır.
En basit yolu iki nokta
":"
operatörünü kullanmaktır.
rakamlar <- 0:9
rakamlar
## [1] 0 1 2 3 4 5 6 7 8 9
- büyükten küçüğe rakamlardan vektör oluşturulması
rakamlar <- 9:0
rakamlar
## [1] 9 8 7 6 5 4 3 2 1 0
4.5.1 seq()
Belirli bir kurala göre sayı dizileri oluşturmak için ise
seq()
,rep()
vepaste()
fonksiyonlarından yararlanılabilir. İlk olarak bu fonksiyonların yardım sayfalarını inceleyelim.1'den 10'a kadar birer birer artan sayılardan dizi oluşturulacak kodu oluşturunuz.
seq(from=1,to=10,by=...)
Bir önceki işlemi argümansız olarak oluşturunuz.
Aynı çıktıyı tek bir argümanla elde edebilir misiniz?
length argümanını kullanarak aşağıdaki çıktıyı oluşturacak kodu oluşturunuz.
## [1] 1.0 1.4 1.8 2.2 2.6 3.0
- by argümanını ile artış miktarını kullanarak aşağıdaki çıktıyı oluşturacak kodu oluşturunuz.
## [1] 1.0 1.5 2.0 2.5 3.0
- Belirli bir aralıkta kaç elemanın yer alacağını length.out argümanı kullanarak aşağıdaki çıktıyı oluşturacak kodu oluşturunuz.
## [1] 1.0 1.5 2.0 2.5 3.0
4.5.2 rep()
rep()
fonksiyonu için örnekler
## [1] 3 4 5 3 4 5 3 4 5
# rakamların üç kere tekrar ettirilmesi
rep(0:9, times = 3)
## [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
-
a <- c(3,5,7)
vektörünü kullanarak aşağıdaki çıktıyı elde edecek kodu hazırlayınız.
## [1] 3 3 3 5 5 5 7 7 7
-
a <- c(3,5,7)
vektörünü kullanarak aşağıdaki çıktıyı elde edecek kodu hazırlayınız.
## [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
- Çıktıyı elde edecek kodu hazırlayınız.
## [1] 1 1 2 2 3 3 4 4
- Çıktıyı elde edecek kodu hazırlayınız.
## [1] 1 2 2 3 3 3
4.5.3 paste()
-
paste()
fonksiyonu çıktısı her zaman için karakterdir.
paste(1:4) # çıktısı karakterdir
## [1] "1" "2" "3" "4"
## [1] "character"
- Çıktıyı elde edecek kodu tamamlayınız
paste("test",...)
## [1] "test 1" "test 2" "test 3" "test 4" "test 5" "test 6" "test 7"
## [8] "test 8" "test 9" "test 10"
- Çıktıyı elde edecek kodu tamamlayınız
paste("test",1:10,"...",sep="_")
## [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"
- Çıktıyı elde edecek kodu tamamlayınız
paste("test",c("A","B","C","D",...))
## [1] "test A" "test B" "test C" "test D" "test 1" "test 2" "test 3" "test 4"
4.6 Rasgele Veri Oluşturma
- Farklı fonksiyonlarla rastgele veri üretilebilir. Örneğin 0-100 arasında 20 farklı değer elde edilmek istenilsin. Bunu yapmak için
sample()
,runif()
ya darnorm()
fonksiyonlarından yararlanılabilir.
sample(0:100,5)
## [1] 73 79 47 48 33
runif(10, 0, 5)
## [1] 0.61703840 2.12481918 0.01545461 0.40971507 2.90741619 3.60692201
## [7] 3.34896937 3.95655750 0.12660813 0.33521247
rnorm(10,50,5)
## [1] 44.58270 59.98858 49.81891 57.83521 45.06195 42.82001 56.20465 59.97128
## [9] 49.01353 50.82424
- Kullanılan üç fonksiyonun da yardım sayfalarını ve kullanım amaçlarını inceleyiniz.
4.7 İşlemler
BKI vücut ağırlığınızın metre cinsinden boy uzunluğunun karesine bölünmesi ile elde edilmektedir. Her bir bireye ait BKI değerini hesaplayınız. BKI değerlerinin ortalaması kaçtır(iki ondalığa yuvarlayınız)?
ad <- c("Ali","Elif","Su","Deniz","Aras","Berk","Can","Ece","Efe","Arda")
boy <- c(160,165,170,155,167,162,169,158,160,164)
kilo <- c(55,55,57,50,48,65,58,62,45,47)
## [1] 21.48437 20.20202 19.72318 20.81165 17.21109 24.76757 20.30741 24.83576
## [9] 17.57812 17.47472
## [1] 20.44
4.7.1 Kendinizi Test Edin
S1. Aşağıdaki tabloda yer alan üç sütun için birer vektör oluşturunuz. Öğrencilerin geçme notu her iki sınavın ortalaması olarak hesaplanacaktır. Bu öğrencilerin geçme notlarını hesaplayınız. Geçme notlarının betimsel istatistiklerini hesaplayınız.
Öğrenci | Vize | Final |
---|---|---|
Ogrenci1 | 50 | 45 |
Ogrenci2 | 55 | 65 |
Ogrenci3 | 60 | 85 |
Ogrenci4 | 70 | 90 |
Ogrenci5 | 80 | 85 |
Geçme notlarının minumum değeri:
Geçme notlarının ortalama değeri:
Geçme notlarının maksimum değeri:
S2. Birden n'e kadar olan sayların toplamını hesaplayan fonksiyon yazımı toplam()
tek argümanlı fonksiyon oluşturunuz. Argüman değeri 5 olduğunda 1+2+3+4+5=15 değerini versin.
- birden n'e kadar olan sayların toplamı: (n*(n+1))/2
S3. 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 kaça kadar olan sayların toplamı hesaplansın: yazsın, kullanıcının girdiği değere göre aşağıda çıktısı çıksın.