Doç. Dr. Hasan Sarptaş
Ege Üniversitesi, Güneş Enerjisi ABD. Yüksek Lisans Dersi
R'daki veri tipleri, bir değişkende saklanan bilginin türünü belirtir ve hesaplamalar ile analizler sırasında nasıl davranacağını belirler. Verinin bellekte nasıl temsil edildiğini ve fonksiyonların bunu nasıl yorumladığını tanımlar. R dinamik tipli bir dildir, yani bir değer oluşturulduğunda veri tipi otomatik olarak atanır.
R'de ondalık nokta içeren sayılar numeric olarak adlandırılır. Bu, sayılar için varsayılan veri tipidir ve gerçek sayıları (reel sayıları) saklamak ve hesaplamalar yapmak için kullanılır. Sayısal değerler çift hassasiyetli kayan nokta formatında saklanır, bu da ondalık sayıların doğru temsilini sağlar.
R bir sayıyı değişkene atadığında, onu en az iki ondalık basamaklı double (ondalık) tipine dönüştürür. Ondalık olmayan sayılar açıkça belirtilmedikçe gerçek tamsayı değildir.
# Ondalık içeren sayısal değişken
x <- 5.6
print(class(x))
print(typeof(x))
# Ondalık olmayan sayı
y <- 5
print(class(y))
print(typeof(y))
# y'nin tamsayı olup olmadığını kontrol et
print(is.integer(y))
[1] "numeric" [1] "double" [1] "numeric" [1] "double" [1] FALSE
class() değişkenin genel türünü belirler (numeric, character vb.).typeof() değerin içsel olarak nasıl saklandığını gösterir (double, integer, logical vb.).is.integer() değerin gerçek bir tamsayı olup olmadığını doğrular. Burada y tamsayı değildir çünkü R varsayılan olarak double olarak saklar.Tamsayı veri tipi, ondalık içermeyen sayıları saklamak için kullanılır. Tamsayılar as.integer() fonksiyonu kullanılarak veya sayının sonuna L eki eklenerek oluşturulur. Bu, R'ye değeri varsayılan double yerine tamsayı olarak saklamasını söyler.
# as.integer() ile tamsayı oluşturma
x <- as.integer(5)
print(class(x))
print(typeof(x))
# L eki ile tamsayı oluşturma
y <- 5L
print(class(y))
print(typeof(y))
[1] "integer" [1] "integer" [1] "integer" [1] "integer"
Mantıksal veri tipi, R'de TRUE veya FALSE boolean değerlerini temsil eder. Mantıksal değerler genellikle değişkenler arası karşılaştırmalarla veya doğrudan boolean atamasıyla oluşturulur. Karar verme, koşullu ifadeler ve veri filtrelemede kullanılır.
# Karşılaştırma ile mantıksal değer oluşturma
x <- 4
y <- 3
z <- x > y
print(z)
print(class(z))
print(typeof(z))
# Doğrudan atama ile mantıksal değer
logi <- FALSE
print(class(logi))
print(typeof(logi))
[1] TRUE [1] "logical" [1] "logical" [1] "logical" [1] "logical"
Karmaşık veri tipi, hem gerçek hem sanal bileşene sahip sayıları saklar. Sanal kısım i eki ile belirtilir. Bilimsel hesaplamalar, sinyal işleme ve matematiksel modellemede kullanılır.
# Karmaşık sayı oluşturma
x <- 4 + 3i
print(class(x))
print(typeof(x))
[1] "complex" [1] "complex"
Karakter veri tipi, metinleri (harfler, sayılar, özel semboller) saklamak için kullanılır. Karakter değerleri (string) tek (') veya çift (") tırnak içinde yazılır. İsimler, etiketler, mesajlar ve veri setlerindeki metinsel bilgiler için yaygındır.
# Karakter değişkeni oluşturma
char <- "Geeksforgeeks"
print(class(char))
print(typeof(char))
[1] "character" [1] "character"
Ham veri tipi, bayt seviyesinde veri saklamak ve işlemek için kullanılır. İşlenmemiş ikili değerleri temsil eder; dosya işlemleri, ağ verileri veya ikili protokoller için faydalıdır. Ham vektörler 00 ile FF (onaltılık) aralığındaki elemanlardan oluşur.
# Ham vektör oluşturma
x <- as.raw(c(0x1, 0x2, 0x3, 0x4, 0x5))
print(x)
[1] 01 02 03 04 05
R, bir nesnenin veri tipini doğrulamak için is. önekiyle başlayan fonksiyonlar sağlar. Nesnenin tipi eşleşirse TRUE, değilse FALSE döner.
Sözdizimi: is.veri_tipi(nesne)
print(is.logical(TRUE))
print(is.integer(3L))
print(is.numeric(10.5))
print(is.complex(1+2i))
print(is.character("12-04-2020"))
print(is.integer("a"))
print(is.numeric(2+3i))
[1] TRUE [1] TRUE [1] TRUE [1] TRUE [1] TRUE [1] FALSE [1] FALSE
Veri tipi dönüşümü (coercion), bir nesneyi bir tipden diğerine değiştirmektir. R tarafından otomatik yapılabilir veya programcı tarafından manuel olarak gerçekleştirilebilir.
as.numeric(), as.character() gibi fonksiyonlarla manuel yapılır.Sözdizimi: as.veri_tipi(nesne)
print(as.numeric(TRUE))
print(as.complex(3L))
print(as.logical(10.5))
print(as.character(1+2i))
print(as.numeric("12-04-2020"))
[1] 1 [1] 3+0i [1] TRUE [1] "1+2i" Warning message in print(as.numeric("12-04-2020")): “NAs introduced by coercion” [1] NA