R Nesneler

Dr. Kubra Atalay Kabasakal

Kasim 2021

R Nesneler

R nesne (object) yonelimli bir programlama dilidir.

Sayisal Nesneler - tam sayi

# tamsayi nesnesi olusturulmasi
tamsayi <- 2L
# tamsayi nesnesinin turunun sorgulanmasi
typeof(tamsayi)
## [1] "integer"
# tamsayi nesnesinin yazdirilmasi
tamsayi
## [1] 2

Sayisal Nesneler - ondalik sayi

# ondaliksayi nesnesinin olusturulmasi
ondaliksayi <- 2.5
# ondaliksayi nesnesinin turunun sorgulanmasi
typeof(ondaliksayi)
## [1] "double"
# ondaliksayi nesnesinin yazdirilmasi
ondaliksayi
## [1] 2.5

Sayisal Nesneler - ondalik sayi

# komplekssayi nesnesinin olusturulmasi
komplekssayi <- 5+2i
# komplekssayi nesnesinin turunun sorgulanmasi
typeof(komplekssayi)
## [1] "complex"
# komplekssayi nesnesinin yazdirilmasi
komplekssayi
## [1] 5+2i

Sayisal Nesnelerle Islemler-I

# tek elemanli vektorler
x <- 1
y <- 1

x+y
## [1] 2
x-y
## [1] 0
x*y
## [1] 1
x/y
## [1] 1

Sayisal Nesnelerle Islemler-II

# cok elemanli vektorler

x <- c(3,4,5)
y <- c(1,2,3)

# vektor eleman sayilari ayni oldugunda
length(x);length(y)
## [1] 3
## [1] 3
x+y
## [1] 4 6 8
x-y
## [1] 2 2 2
x*y
## [1]  3  8 15
x/y
## [1] 3.000000 2.000000 1.666667

Sayisal Nesnelerle Islemler-III

# cok elemanli vektorler

x <- 1:9
y <- c(1,2,3)  

# vektor eleman sayilari farkli oldugunda 
length(x)/length(y)
## [1] 3
x+y
## [1]  2  4  6  5  7  9  8 10 12
x-y
## [1] 0 0 0 3 3 3 6 6 6
x*y
## [1]  1  4  9  4 10 18  7 16 27
x/y
## [1] 1.0 1.0 1.0 4.0 2.5 2.0 7.0 4.0 3.0

Sayisal Nesnelerle Islemler-IV

# cok elemanli vektorler

x <- 1:5
y <- c(1,2)  

# vektor eleman sayilari farkli oldugunda
length(x)/length(y)
## [1] 2.5
x+y
## [1] 2 4 4 6 6
x-y
## [1] 0 0 2 2 4
x*y
## [1] 1 4 3 8 5
x/y
## [1] 1 1 3 2 5

Karakter Nesneler

# karakter nesnesi olusturulmasi
karakter <- "olcme"
# Olusturulan nesnenin turunun sorgulanmasi
typeof(karakter)
## [1] "character"
# nesne yazdirilmasi
karakter
## [1] "olcme"

Karakter Nesnelerde Islemler-I

# karakter nesnesi olusturulmasi
ad <- "Su"
soyad <- "Sevim"
# paste fonksiyonu ile iki nesnenin birlestirilmesi
paste(ad,soyad) # iki nesneyi arada bosluk birakarak birlestirir.
## [1] "Su Sevim"
paste(ad,soyad, sep="") # iki nesneyi arada bosluk birakmadan birlestirir.
## [1] "SuSevim"
# sep argumani farkli sekillerde ozellestirilebilir.

Karakter Nesnelerde Islemler-II

# base pakette yer alan bazi karakter vektorler bulunmaktadir.
letters
##  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
LETTERS
##  [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
## [20] "T" "U" "V" "W" "X" "Y" "Z"
month.name
##  [1] "January"   "February"  "March"     "April"     "May"       "June"     
##  [7] "July"      "August"    "September" "October"   "November"  "December"
month.abb
##  [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"

Karakter Nesnelerde Islemler-III

Nesne birlestirme fonksiyonlarindan en sik kullanini paste()

paste() fonksiyonunun temel argumanlari ise sep ve collapse’dir.

# paste fonksiyonu ile karakter nesneler birlestirilebilir.

(alfabe1 <- paste(letters,1:26,sep="_"))
##  [1] "a_1"  "b_2"  "c_3"  "d_4"  "e_5"  "f_6"  "g_7"  "h_8"  "i_9"  "j_10"
## [11] "k_11" "l_12" "m_13" "n_14" "o_15" "p_16" "q_17" "r_18" "s_19" "t_20"
## [21] "u_21" "v_22" "w_23" "x_24" "y_25" "z_26"
(alfabe2 <- paste(letters,1:26,sep="_",collapse=" "))
## [1] "a_1 b_2 c_3 d_4 e_5 f_6 g_7 h_8 i_9 j_10 k_11 l_12 m_13 n_14 o_15 p_16 q_17 r_18 s_19 t_20 u_21 v_22 w_23 x_24 y_25 z_26"
length(alfabe1)
## [1] 26
length(alfabe2)
## [1] 1

Karakter Nesnelerde Islemler-IV

##  [1] "1. maddenin guclugu: 0.84"  "2. maddenin guclugu: 0.69" 
##  [3] "3. maddenin guclugu: 0.59"  "4. maddenin guclugu: 0.95" 
##  [5] "5. maddenin guclugu: 0.53"  "6. maddenin guclugu: 0.98" 
##  [7] "7. maddenin guclugu: 0.28"  "8. maddenin guclugu: 0.22" 
##  [9] "9. maddenin guclugu: 0.92"  "10. maddenin guclugu: 0.51"

Karakter Nesnelerde Islemler-V

Buyuk Kucuk Harf Duzenleme Fonksiyonlari toupper() ve tolower()

# toupper() ve tolower() fonksiyonları
toupper(letters)
##  [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
## [20] "T" "U" "V" "W" "X" "Y" "Z"
tolower(LETTERS)
##  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"

casefold() fonksiyonu da upper argumani ile birlikte kullanilabilir.

# casefold() fonksiyonu
casefold(month.abb, upper = FALSE)
##  [1] "jan" "feb" "mar" "apr" "may" "jun" "jul" "aug" "sep" "oct" "nov" "dec"
casefold(month.abb, upper = TRUE)
##  [1] "JAN" "FEB" "MAR" "APR" "MAY" "JUN" "JUL" "AUG" "SEP" "OCT" "NOV" "DEC"

Karakter Nesnelerde Islemler-VI

Karakter nesnelerin kac harften olustugu nchar() fonskiyonu ile belirlenebilir.

# nchar() fonksiyonu
nchar(month.name)
##  [1] 7 8 5 5 3 4 4 6 9 7 8 8

Karakter nesneleri belli bir yerden bolmek icin substr() ve substring() fonksiyonlari kullanilabilir.

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

Karakter nesnelerde daha daha fazlası icin asagidaki fonksiyonları inceleyebilirsiniz.

Mantıksal Nesneler

# mantiksal1 ve mantiksal2 nesnelerinin olusturulmasi
mantiksal1 <-TRUE
mantiksal2 <-T

# Olusturulan nesnelerin turunun sorgulanmasi
typeof(mantiksal1)
## [1] "logical"
typeof(mantiksal2)
## [1] "logical"
# Olusturulan nesnelerin yazdirilmasi
mantiksal1
## [1] TRUE
mantiksal2
## [1] TRUE

Mantıksal Nesneler -I

Mantiksal operatorler programlamanın temeli ve vazgeçilmezidir.

# kucuk olma sinamasi
4<5 
## [1] TRUE
# buyuk olma sinamasi
10>100
## [1] FALSE
# esitlik sinamasii
T==TRUE
## [1] TRUE
# esitlik sinamasii
4==5
## [1] FALSE

Mantıksal Nesneler -II

Mantiksal operatorlerle yapilan sinamalar ile mantiksal nesneler olusturulur.

sonuc <- 4<5

typeof(sonuc)
## [1] "logical"

Nesne Turleri Arasi Donusumm

Nesne turleri arasindaki degisim uygunluk durumuna gore as.*()fonksiyonları ile saglanir.

# Karakter verinin numerik veriye donusturulmesi
as.numeric("3.14") 
## [1] 3.14
# ondalik verinin tam sayiya donusturulmesi
as.integer(3.14)
## [1] 3
as.integer(pi)
## [1] 3
# karakter verinin numerik veriye donusturulmesi
as.numeric("olcme")
## [1] NA
# mantiksal verinin karakter veriye donusturulmesi (NA)
as.character(TRUE)
## [1] "TRUE"
# numerik verinin karakter veriye donusturulmesi
as.character(10)
## [1] "10"
# mantiksal verinin numerik veriye donusturulmesi
as.numeric(TRUE)
## [1] 1

Nesne Turleri Sorgulama

Nesne turleri sorgulamak icin ise class() ya da mode() fonksiyonlari kullanabilir. Ancak bir nesne turune ait olup olmadigini sorgulamak icin ise is.*() fonksiyonlari kullanilir.

x<- 3.14; class(x) 
## [1] "numeric"
is.numeric(x)
## [1] TRUE
is.logical(x)
## [1] FALSE

Nesne Turleri Sorgulama

Sayisal nesnelerin turu için typeof() fonksiyonu da kullanılabilir.

y <- 2L; typeof(y); class(y) # satir ici kod ayirma
## [1] "integer"
## [1] "integer"
is.integer(y)
## [1] TRUE
is.double(y)
## [1] FALSE

Gunun Sorusu - I

Elinizde bulunan asagida yer alan ad_soyad nesnesini kullanarak asagidaki ciktiyi olusturmaya calisiniz.

ad_soyad<- c("Ayse-Sel","Can-Yucel","Cem-Togay","Banu-Cift")

ad_soyad
## [1] "Ayse-Sel"  "Can-Yucel" "Cem-Togay" "Banu-Cift"
## [1] "Ayse" "Can"  "Cem"  "Banu"
## [1] "Sel"   "Yucel" "Togay" "Cift"

ODEV

KAYNAKCA

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.