5 R Nesneler
- Örnek bir veri seti
carat | cut | color | clarity | depth | table | price | x | y | z |
---|---|---|---|---|---|---|---|---|---|
0.23 | Ideal | E | SI2 | 61.5 | 55 | 326 | 3.95 | 3.98 | 2.43 |
0.21 | Premium | E | SI1 | 59.8 | 61 | 326 | 3.89 | 3.84 | 2.31 |
0.23 | Good | E | VS1 | 56.9 | 65 | 327 | 4.05 | 4.07 | 2.31 |
0.29 | Premium | I | VS2 | 62.4 | 58 | 334 | 4.20 | 4.23 | 2.63 |
0.31 | Good | J | SI2 | 63.3 | 58 | 335 | 4.34 | 4.35 | 2.75 |
0.24 | Very Good | J | VVS2 | 62.8 | 57 | 336 | 3.94 | 3.96 | 2.48 |
R nesne (object) yönelimli bir programlama dilidir.
- Karakter (character)
- Sayısal (numeric)
- tam sayı (integer)
- ondalıklı sayı (double)
- karmaşık sayı (complex)
- Mantıksal (logical)
- Faktör (factor)
- Liste (list)
- Fonksiyon (function)
5.1 tam sayi
- tamsayı nesnesi oluşturulması
tamsayi <- 2L
- tamsayi nesnesinin türünün sorgulanması
typeof(tamsayi)
## [1] "integer"
- tamsayı nesnesinin yazdırılması
tamsayi
## [1] 2
5.2 ondalık sayı
- ondaliksayi nesnesinin oluşturulması
ondaliksayi <- 2.5
- ondaliksayi nesnesinin türünün sorgulanması
typeof(ondaliksayi)
## [1] "double"
- ondaliksayi nesnesinin yazdırılması
ondaliksayi
## [1] 2.5
5.3 İşlemler
- tek elemanlı vektörler
x <- 1
y <- 1
x+y
## [1] 2
- çok elemanlı vektörler
## [1] TRUE
x+y
## [1] 4 6 8
x-y
## [1] 2 2 2
- çok elemanlı vektörler
## [1] 3
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
- çok elemanlı vektörler
## [1] 2.5
-
x+y
işleminin sonucu nedir?
x + y
## Warning in x + y: longer object length is not a multiple of shorter object
## length
## [1] 2 4 4 6 6
5.4 Karakter Nesneler
- karakter nesnesi oluşturulması
karakter <- "olcme"
- Oluşturulan nesnenin türünün sorgulanmasa
typeof(karakter)
## [1] "character"
- nesne yazdırılması
karakter
## [1] "olcme"
# karakter nesnesi oluşturulması
ad <- "Su"
soyad <- "Sevim"
- iki nesneyi arada boşluk bırakarak birleştirir.
paste(ad,soyad)
## [1] "Su Sevim"
- sep argümanı farklı şekillerde özelleştirilebilir.
paste(ad,soyad, sep="")
## [1] "SuSevim"
paste(ad,soyad,sep="_")
## [1] "Su_Sevim"
- base pakette yer alan bazı karakter vektörler bulunmaktadır.
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"
- Nesne birleştirme fonksiyonlarından en sık kullananı
paste()
-
paste()
fonksiyonunun temel argümanları isesep
vecollapse
'dir.
harf5<- letters[1:5]
(harf51 <- paste(harf5,1:5,sep="_"))
## [1] "a_1" "b_2" "c_3" "d_4" "e_5"
length(harf51)
## [1] 5
(harf52 <- paste(harf5,1:5,sep="_",
collapse=" "))
## [1] "a_1 b_2 c_3 d_4 e_5"
length(harf52)
## [1] 1
-
paste()
fonksiyonun yardım sayfasını inceleyiniz.
5.4.1 Günün Sorusu
- Aşağıdaki çıktıyı oluşturacak olan kodu oluşturunuz. Madde güçlük değerlerini runif() fonksiyonu ile oluşturabilirsiniz.
## [1] "1. maddenin guclugu: 0.86" "2. maddenin guclugu: 0.59"
## [3] "3. maddenin guclugu: 0.95" "4. maddenin guclugu: 0.54"
## [5] "5. maddenin guclugu: 0.89" "6. maddenin guclugu: 0.17"
## [7] "7. maddenin guclugu: 0" "8. maddenin guclugu: 0.13"
## [9] "9. maddenin guclugu: 0.64" "10. maddenin guclugu: 0.96"
Bunun birden fazla yolu olabilir, farklı şekillerde yapabilirsiniz.
Büyük Küçük Harf Düzenleme Fonksiyonları toupper()
ve tolower()
toupper(harf5)
## [1] "A" "B" "C" "D" "E"
tolower(harf5)
## [1] "a" "b" "c" "d" "e"
casefold()
fonksiyonu da upper argümanı ile birlikte kullanılabilir.
casefold(harf5, upper = FALSE)
## [1] "a" "b" "c" "d" "e"
casefold(harf5, upper = TRUE)
## [1] "A" "B" "C" "D" "E"
- Karakter nesnelerin kaç harften oluştuğu
nchar()
fonksiyonu ile belirlenebilir.
nchar(month.name)
## [1] 7 8 5 5 3 4 4 6 9 7 8 8
- Karakter nesneleri belli bir yerden bölmek icin
substr()
vesubstring()
fonksiyonları kullanılabilir.
substr("YILMAZ", 1,3)
## [1] "YIL"
substring("YILMAZ", 1:.. , 1:6)
kodunda "Y" "I" "L" "M" "A" "Z" çıktısı oluşturacak kodu yazınız`
substring("YILMAZ", ... , 4:6)
kodunda "ILM" "ILMA" "ILMAZ"` çıktınısı oluşturacak kodu yazınızKarakter nesnelerde daha fazlası için aşağıdaki fonksiyonları inceleyebilirsiniz.
5.5 Mantıksal Nesneler
mantiksal1 <-TRUE
typeof(mantiksal1)
## [1] "logical"
mantiksal1
## [1] TRUE
Mantıksal operatörler programlamanın temeli ve vazgeçilmezidir.
# eşitlik sınaması
T==TRUE
## [1] TRUE
4==5
kodunun sonucu nedir?4<5
kodunun sonucu nedir?10>100
kodunun sonucu nedir?Mantıksal operatörlerle yapılan sınamalar ile mantıksal nesneler oluşturulur.
sonuc <- 4<5
typeof(sonuc)
## [1] "logical"
- Nesne türleri arasındaki değişim uygunluk durumuna göre
as.*()
fonksiyonları ile sağlanır.
# Karakter veri numerik veriye
as.numeric("3.14")
## [1] 3.14
# ondalık verin tam sayıya
as.integer(pi)
## [1] 3
# karakter veri numerik veriye (NA)
as.numeric("olcme")
## Warning: NAs introduced by coercion
## [1] NA
# mantıksal veri karakter veriye (NA)
as.character(TRUE)
## [1] "TRUE"
# numerik veri karakter veriye
as.character(10)
## [1] "10"
# mantıksal veri numerik veriye
as.numeric(TRUE)
## [1] 1
5.6 Nesne Türleri Sorgulama
- Nesne türleri sorgulamak için ise
class()
ya damode()
fonksiyonları kullanabilir. Ancak bir nesne türüne ait olup olmadığını sorgulamak için iseis.*()
fonksiyonları kullanılır.
x<- 3.14; class(x)
## [1] "numeric"
is.numeric(x)
## [1] TRUE
is.logical(x)
## [1] FALSE
- Sayısal nesnelerin türü için
typeof()
fonksiyonu da kullanılabilir.
## [1] "integer"
## [1] "integer"
is.integer(y)
## [1] TRUE
is.double(y)
## [1] FALSE
5.6.1 Günün Sorusu
- aşağıda yer alan ad_soyad nesnesini kullanarak
ad_soyad<- c("Ayse-Sel","Can-Yucel","Cem-Togay","Banu-Cift")
aşağıdaki çıktıyı oluşturmaya çalısınız.
## [1] "Ayse" "Can" "Cem" "Banu"
## [1] "Sel" "Yucel" "Togay" "Cift"