Bölüm 4 Temel obje türleri

R’da 5 çeşit temel obje türü var:

4.1 Karakter (character)

x = 'a'
x
## [1] "a"
a
## [1] 4

Karakter değişkeni yaratmak için, tırnak işaretlerini ('') kullanıyoruz. Yani, x bir obje iken 'a' bir karakterdir. Bu sebeple, a yazdığınızda, R a isminde bir obje arıyor, bizim a isminde bir objemiz olmadığından obje bulunamadı hatası veriyor. Bu arada R’da en iyi dostumuz hata mesajları. Genelde hata mesajı sorunun nerede olduğu hakkında çok iyi fikir verecektir.

class(x)
## [1] "character"

class() fonksiyonu obje sınıfını öğrenmemizi sağlıyor.

x = 'melike'
x
## [1] "melike"
class(x)
## [1] "character"

Karakter sınıfındaki objeler, tek bir karakter içermek zorunda değil, 'a' da 'aaa' da karakter objeleridir.

4.2 Nümerik (numeric)

x = 3
x
## [1] 3
class(x)
## [1] "numeric"
x = 3.14
x
## [1] 3.14
class(x)
## [1] "numeric"
x= 1/0
x
## [1] Inf
class(x)
## [1] "numeric"
x = 0 / 0
x
## [1] NaN
class(x)
## [1] "numeric"

Burada ilginç olan kısımlar:

  1. R tam sayıları da özellikle belirtmediğimiz sürece nümerik olarak alıyor
  2. Sonsuzun (Inf) veri tipi nümerik
  3. NaN (“not a number,” “sayı değil”) değeri de nümerik sınıfında.

4.3 Tam sayılar (integer)

x = 3L
x
## [1] 3
class(x)
## [1] "integer"

Özellikle tam sayı oluşturmak istiyorsak sondaki L ekini kullanmalıyız.

4.4 Kompleks (complex)

x = 1+4i
x
## [1] 1+4i
class(x)
## [1] "complex"

4.5 Mantıksal (logical, boolean)

x = TRUE
x
## [1] TRUE
class(x)
## [1] "logical"
x = FALSE
x
## [1] FALSE
class(x)
## [1] "logical"
x = T
x
## [1] TRUE

TRUE ve FALSE iki temel mantıksal değişken (True=Doğru, False=Yanlış). Sadece baş harfleri kullanılarak da ifade edilebilirler.

x = f
## Error in eval(expr, envir, enclos): object 'f' not found

Ancak bu harfler büyük harf olmali yoksa f ismindeki objeye eşitlemeye çalışmış oluyoruz x’i.

Alıştırma olarak şu objelerin sınıflarını tahmin etmeye çalışıp, yanılıp yanılmadığınızı kontrol edebilirsiniz:

a='5' 
b='T'
y=10.5L
x='y'
d=x

Tırnak işaretleri içinde veriler girildiğinden a, b, x, ve dolayısıyla d objeleri karakter tipindedir. y ise ondalıklı değer girdiğimizden L uzantısını kullansak da tam sayı değil nümerik tipindedir.

İlerledikçe class() fonksiyonu ile objelere baktığınızda farklı cevaplar alacağız. Mesela objelerden oluşan objelerimiz olduğunda - 1den 100e kadar olan sayıları içeren 10x10luk bir matrisiniz varsa mesela (class(matrix(1:100,10))). Veya R’ın nesne tabalı programlama (object oriented programming) dili olmasının getirisi olarak, yeni obje sınıfları ile çalıştığınızda.

Eğer ki obje açık bir obje sınıfına sahipse (örn. matrix gibi), nümerik değerlerden oluşan bir obje mi, karakter objesi mi, bunu görmek yerine sınıfını göreceksiniz. Bu durumda mode() fonksiyonunu kullanarak ne tip objelerden oluştuğunu görebiliriz, örn mode(matrix(1:100,10)).