Vektörler

Bu derste vektörleri tanımladık ve vektörler ile çeşitli işlemler yaptık. Vektör uzunluğunu belirlemek için length() fonksiyonunun kullanıldığını öğrendik.

sayisal_vektor<-c(1,2,3)
tam_sayi<-3L
tam_sayi
## [1] 3
typeof(tam_sayi)
## [1] "integer"
karakter_vektor<-c("a", "b", "c")  #karakter vektorler cift tırnak icinde yazilir
karakter_vektor
## [1] "a" "b" "c"
mantiksal_vektor<- c(TRUE,TRUE,FALSE)
mantiksal_vektor
## [1]  TRUE  TRUE FALSE
a<- 1
length(a)
## [1] 1
x<-1
y<-1
x+y
## [1] 2
x<- c(1,2,3)
y<- c(4,5,6)
x+y
## [1] 5 7 9
length(x)==length(y)
## [1] TRUE
x-y
## [1] -3 -3 -3
x<- 1:9
y<- c(1,2,3)
length(x)==length(y)
## [1] FALSE
x+y
## [1]  2  4  6  5  7  9  8 10 12
x/y
## [1] 1.0 1.0 1.0 4.0 2.5 2.0 7.0 4.0 3.0
x<- 1:5
y<- c(1,2)
length(x)/length(y)
## [1] 2.5
x+y
## Warning in x + y: uzun olan nesne uzunluğu kısa olan nesne uzunluğunun bir katı
## değil
## [1] 2 4 4 6 6

İndeksler

Bir “ad” vektörü oluşturduk ve bu vektörden eleman seçebilmek için şu adımları uyguladık:

ad  <-  c("Ali","Elif","Su","Deniz","Aras","Berk","Can","Ece","Efe","Arda")
ad[1]   #ad  vektorunun 1. elemani
## [1] "Ali"
ad[5]   #ad  vektorunun 5. elemani
## [1] "Aras"
ad[length(ad)]  #ad  vektorunun son elemani
## [1] "Arda"
ad[c(1,5,8)]    #ad vektorunun 1. 5. ve 8. elammanini yazdirir
## [1] "Ali"  "Aras" "Ece"
ad[c(2:length(ad))]   #ad vektorunun 2 den baslayarak en son elemanini yazdirir
## [1] "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"   "Arda"
ad[-1]  #ad vektorunun 2 den baslayarak en son elemanini yazdirir
## [1] "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"   "Arda"
ad[-1] == ad[c(2:length(ad))]
## [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
ad[c(-1,-5)]   #ad vektorunun 1.  ve 5. elemanini haric tutar.
## [1] "Elif"  "Su"    "Deniz" "Berk"  "Can"   "Ece"   "Efe"   "Arda"
ad[-c(1,5)]    #ad vektorunun 1.  ve 5. elemanini haric tutar.
## [1] "Elif"  "Su"    "Deniz" "Berk"  "Can"   "Ece"   "Efe"   "Arda"
ad[c(-1,-5)]==ad[-c(1,5)]
## [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
ad[(length(ad)-2):length(ad)]   #vektorun son uc elemanini yazdirir
## [1] "Ece"  "Efe"  "Arda"

Bu vektöre eleman eklemeyi öğrendik. Ayrıca bir vektörde araya eleman ekleyebilmek için append() fonksiyonunu kullandık.

ad[11] <-"Asu" ;ad    #vektore eleman ekleme
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"  
## [10] "Arda"  "Asu"
ad[12:13]<- c("Ahu", "Han");ad
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"  
## [10] "Arda"  "Asu"   "Ahu"   "Han"
ad<-append (ad, "Taha", after=3)   #araya eleman ekleme
ad
##  [1] "Ali"   "Elif"  "Su"    "Taha"  "Deniz" "Aras"  "Berk"  "Can"   "Ece"  
## [10] "Efe"   "Arda"  "Asu"   "Ahu"   "Han"

Bir vektörü diğer vektörü isimlendirmek için kullandık.

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)

names(boy)
## NULL
names(boy) <- ad #boy vektorunu ad vektoru ile isimlendirmek icin
boy
##   Ali  Elif    Su Deniz  Aras  Berk   Can   Ece   Efe  Arda 
##   160   165   170   155   167   162   169   158   160   164
boy["Arda"]
## Arda 
##  164

Örüntüler kullanarak farklı vektörler oluşturduk. Bunun için seq(), rep() ve paste() fonksiyonlarını kullandık.

seq(from=1, to=10,by=1)
##  [1]  1  2  3  4  5  6  7  8  9 10
seq(1,10)
##  [1]  1  2  3  4  5  6  7  8  9 10
seq(from=1, to=3, length=6)
## [1] 1.0 1.4 1.8 2.2 2.6 3.0
seq(from=1, to=3,by=0.5)
## [1] 1.0 1.5 2.0 2.5 3.0
seq(from=1, to=3, length.out=5)
## [1] 1.0 1.5 2.0 2.5 3.0
rep(c(3,4,5),3)
## [1] 3 4 5 3 4 5 3 4 5
rep(0:9 , 3)    #aynı
##  [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
rep(0:9 , times=3)    #aynı
##  [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)
rep(a, each=3)
## [1] 3 3 3 5 5 5 7 7 7
rep(a, each=3, times=3)
##  [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
a<- c(1,2,3,4)
rep(a, each=2)
## [1] 1 1 2 2 3 3 4 4
a<- c(1,2,3)
rep(a, 1:3)
## [1] 1 2 2 3 3 3
#paste fonksiyonun ciktisi her zaman karakterdir

paste(1:4)
## [1] "1" "2" "3" "4"
class(paste(1:4))
## [1] "character"
paste("test",1:10)
##  [1] "test 1"  "test 2"  "test 3"  "test 4"  "test 5"  "test 6"  "test 7" 
##  [8] "test 8"  "test 9"  "test 10"
paste("test", 1:10,"puan",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"
paste("test", c("A","B","C","D", 1:4))
## [1] "test A" "test B" "test C" "test D" "test 1" "test 2" "test 3" "test 4"

Rastgele Veri Üretme

Rastgele veri oluşturmak için sample(), runif() ve rnorm() fonsiyonlarının kullanılabileceğini öğrendik.

?sample  #(x, size, replace = FALSE, prob = NULL)
## httpd yardım sunucusu başlatılıyor ... tamamlandı
?runif   #(n, min = 0, max = 1)
?rnorm   #(n, mean = 0, sd = 1)

sample(0:100,5)
## [1] 52 96 57 90  3
runif(10,  0, 5)  
##  [1] 4.32317449 3.05190199 1.46517046 4.15380006 0.64338251 0.02527811
##  [7] 1.22270765 4.06713097 1.70665829 4.92747337
rnorm(10,50,5)
##  [1] 44.22947 54.85011 45.13780 51.30973 51.17784 45.51570 47.79046 49.66939
##  [9] 45.39019 46.94971

Histogram Çizimi

sample(0:100,5,replace = T)
## [1] 71 57  9 78 64
hist(runif(100,0,5))

hist(rnorm(100,0,1))

Boy ve kilo vektörleri oluşturarak beden-kitle endeksi hesaplayacak bir fonksiyon yazdık.

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)

boy_m <- boy/100
names(boy_m)
## NULL
names(boy_m)<-ad
boy_m
##   Ali  Elif    Su Deniz  Aras  Berk   Can   Ece   Efe  Arda 
##  1.60  1.65  1.70  1.55  1.67  1.62  1.69  1.58  1.60  1.64
bki<-kilo/(boy_m*boy_m)
bki
##      Ali     Elif       Su    Deniz     Aras     Berk      Can      Ece 
## 21.48437 20.20202 19.72318 20.81165 17.21109 24.76757 20.30741 24.83576 
##      Efe     Arda 
## 17.57812 17.47472
ortalama<- sum(bki)/length(bki)   #same
ortalama
## [1] 20.43959
mean(bki)    #same
## [1] 20.43959
round(ortalama,2)
## [1] 20.44

Günün Sorusu 1

set.seed(10)
guc<-runif(10,0,1)
paste(1:10,sep = ".",(paste(" maddenin guclugu:",runif(n = 10,min = 0,1))))
##  [1] "1. maddenin guclugu: 0.651655666995794" 
##  [2] "2. maddenin guclugu: 0.567737752571702" 
##  [3] "3. maddenin guclugu: 0.113508982118219" 
##  [4] "4. maddenin guclugu: 0.595925305271521" 
##  [5] "5. maddenin guclugu: 0.358049975009635" 
##  [6] "6. maddenin guclugu: 0.428809418343008" 
##  [7] "7. maddenin guclugu: 0.0519033221062273"
##  [8] "8. maddenin guclugu: 0.264177667442709" 
##  [9] "9. maddenin guclugu: 0.398790730861947" 
## [10] "10. maddenin guclugu: 0.836134143406525"

Karakter Nesneleri Bölmek

Karakter nesneleri belli bir yerden bölmek için substr() ve substring() fonksiyonlarını kullandık.

substr("YILMAZ", 1,3)
## [1] "YIL"
#substr  (x, start, stop)
#substring    (text, first, last = 1000000L)

substring("YILMAZ",1:6, 1:6)
## [1] "Y" "I" "L" "M" "A" "Z"
substring("YILMAZ",2, 4:6)
## [1] "ILM"   "ILMA"  "ILMAZ"

Günün Sorusu 2

ad_soyad<- c("Ayse-Sel","Can-Yucel","Cem-Togay","Banu-Cift")
ad_soyad
## [1] "Ayse-Sel"  "Can-Yucel" "Cem-Togay" "Banu-Cift"
ad_soyad_acik<- strsplit(ad_soyad, "-")
ad_soyad_acik
## [[1]]
## [1] "Ayse" "Sel" 
## 
## [[2]]
## [1] "Can"   "Yucel"
## 
## [[3]]
## [1] "Cem"   "Togay"
## 
## [[4]]
## [1] "Banu" "Cift"
ad <- unlist(ad_soyad_acik)[c(1,3,5,7)]
ad
## [1] "Ayse" "Can"  "Cem"  "Banu"
soyad <- unlist(ad_soyad_acik)[c(2,4,6,8)]
soyad
## [1] "Sel"   "Yucel" "Togay" "Cift"

Kendinizi Test Edin

Soru 1

ogrenci<- c("ogrenci1","ogrenci2","ogrenci3","ogrenci4","ogrenci5")
ogrenci
## [1] "ogrenci1" "ogrenci2" "ogrenci3" "ogrenci4" "ogrenci5"
vize<- c(50,55,60,70,80)
vize
## [1] 50 55 60 70 80
final<- c(45,65,85,90,85)
final
## [1] 45 65 85 90 85
gecmenotu<- (vize+final)/2
gecmenotu
## [1] 47.5 60.0 72.5 80.0 82.5
names(gecmenotu)<- ogrenci
gecmenotu
## ogrenci1 ogrenci2 ogrenci3 ogrenci4 ogrenci5 
##     47.5     60.0     72.5     80.0     82.5
min(gecmenotu)
## [1] 47.5
max(gecmenotu)
## [1] 82.5
mean(gecmenotu)
## [1] 68.5

Soru 2

toplam<- function(n){sum(1:n)}
toplam(5)
## [1] 15

Soru 3

toplam<- function(n){n*(n+1)/2 ; return("kaca kadar olan sayıların toplamı hesaplansın:")}
toplam(5)   #buraya kadar yapabildim ????????
## [1] "kaca kadar olan sayıların toplamı hesaplansın:"