Örnekle R'deki Veri Türleri
⚡ Akıllı Özet
R'deki veri tipleri, değerlerin bellekte nasıl saklandığını tanımlarken, operatörler ise R'nin bu değerlerle neler yapabileceğine karar verir. Vektörler, değişkenler, aritmetik, ilişkisel, mantıksal ve atama operatörleri burada çalıştırılabilir örneklerle ele alınmıştır.
R'deki Veri Türleri Nelerdir?
R Programlamada Veri Türleri veya Veri Yapıları aşağıdadır:
- skalerler
- Vektörler (sayısal, karakter, mantıksal)
- Matrisler
- Veri çerçeveleri
- Listeler
Bu liste birbiriyle ilişkili iki fikri karıştırıyor ve bunları ayırmak, sayfanın geri kalanını takip etmeyi kolaylaştırıyor. A veri tipi Tek bir değerin ne olduğunu tanımlar: bir sayı, bir metin parçası, DOĞRU veya YANLIŞ. veri yapısı Kaç değerin bir arada tutulduğunu ve hangi biçimde olduğunu açıklar. Skalerler, vektörler, matrisler, veri çerçeveleri ve listeler yapılardır; içlerindeki değerler yine de R'nin temel türlerinden birine aittir.
| Structure | boyutlar | Farklı türlerin bir arada kullanılmasına izin veriliyor mu? | Tipik kullanım |
|---|---|---|---|
| sayısal | Uzunluk-1 vektörü | Yok hayır | Tek bir ölçüm veya bayrak |
| vektör | 1 | Yok hayır | Bir tür okuma sütunu |
| Matris | 2 | Yok hayır | Sayısal ızgaralar ve doğrusal cebir |
| Veri çerçevesi | 2 | Evet, her sütunda bir tür. | Tablo veri kümeleri |
| Liste | 1, ancak iç içe geçebilir | Evet, her bir öğe için herhangi bir şey. | Model sonuçları ve karışık kaplar |
R'de ayrı bir skalar veri tipi yoktur: skalar, basitçe uzunluğu bir olan bir vektördür; bu nedenle R kodunun büyük bir kısmı tüm vektörler için aynı anda yazılır.
R'de Temel Veri Tipleri
R'deki her değer, az sayıda temel (atomik) türden birine aittir:
- 4.5, sayısal olarak adlandırılan bir ondalık değerdir.
- 4 tam sayı gibi görünse de, R bunu yine de ondalık sayı (double) olarak saklar. Gerçek bir tam sayı gerektiğinde 4L yazın.
- TRUE veya FALSE, R'de mantıksal değer olarak adlandırılan bir Boolean değeridir.
- " " veya ' ' içindeki değer metindir (bir dize). Bu değerlere karakter denir.
İki tür daha bu kümeyi tamamlar. 3+2i gibi karmaşık değerler gerçek ve sanal bir kısım içerirken, ham değerler bayt cinsinden değerler içerir. Her ikisi de günlük analizlerde nadiren karşımıza çıkar, ancak temel R'de listelenirler. typeof() dokümantasyonu Dört yaygın türün yanı sıra.
| Menşei | Örnek değer | sınıf() döndürür | typeof() döndürür |
|---|---|---|---|
| mantıksal | DOĞRU | mantıksal | mantıksal |
| Tamsayı | 4L | tamsayı | tamsayı |
| Double (sayısal) | 4.5 | sayısal | çift |
| Karakter | "R Harika" | karakter | karakter |
| Karmaşık | 3+2i | karmaşık | karmaşık |
| Çiğ | as.raw(10) | çiğ | çiğ |
Bir değişkenin türünü sınıf fonksiyonu ile kontrol edebiliriz.
Örnek 1: Sayısal Bir Değişkeni Kontrol Etme
# Declare variables of different types # Numeric x <- 28 class(x)
Çıktı:
## [1] "numeric"
Örnek 2: Karakter Değişkenini Kontrol Etme
# String y <- "R is Fantastic" class(y)
Çıktı:
## [1] "character"
Örnek 3: Mantıksal Bir Değişkeni Kontrol Etme
# Boolean z <- TRUE class(z)
Çıktı:
## [1] "logical"
Dikkat edin, `class()` fonksiyonu 28 için "sayısal" yanıtını veriyor, oysa 28'in ondalık kısmı yok. R bunu `double` olarak saklıyor ve bunu yalnızca `typeof()` fonksiyonu ortaya çıkarıyor. Öğrenmeye değer bir sonraki fark ise bu değerlere nasıl isim verildiğidir.
R'deki değişkenler
R'da değerleri depolayan temel yapı taşlarından biri olan değişkenler, veri bilimi alanında çalışan herkes için önemlidir. R'da bir değişken, bir sayı, bir nesne, istatistiksel bir sonuç, bir vektör, bir veri kümesi veya bir model tahmini depolayabilir; temelde R'ın ürettiği her şeyi. Bu değişkeni daha sonra sadece değişkenin adını çağırarak kullanabiliriz.
R'da bir değişken tanımlamak için, bir değişken adı atamamız gerekir. Ad, boşluk içermemelidir. İki kelimeyi birleştirmek için _ kullanabiliriz.
İsimler harf, rakam, nokta ve alt çizgi içerebilir, ancak bir harf veya nokta ile başlamalıdır ve TRUE, FALSE ve NULL gibi ayrılmış kelimeler isim olarak kullanılamaz. Değişkene değer eklemek için <- veya = operatörlerini kullanın.
İşte sözdizimi:
# First way to declare a variable: use the `<-` name_of_variable <- value # Second way to declare a variable: use the `=` name_of_variable = value
Komut satırına ne olacağını görmek için aşağıdaki kodları yazabiliriz:
Örnek 1: Bir Değer Atayın ve Yazdırın
# Print variable x
x <- 42
x
Çıktı:
## [1] 42
Örnek 2: İkinci Bir Değişken Tanımlama
y <- 10 y
Çıktı:
## [1] 10
Örnek 3: Bir İfadede İki Değişken Kullanma
# We call x and y and apply a subtraction
x-y
Çıktı:
## [1] 32
Aynı türden birden fazla değer tutan bir değişkene vektör denir ve bu yapı neredeyse tüm R fonksiyonlarının beklediği yapıdır.
R'deki Vektörler
Vektör, her elemanın aynı türe sahip olduğu tek boyutlu bir koleksiyondur. Daha önce öğrendiğimiz tüm temel R veri türleriyle bir vektör oluşturabiliriz. R'da vektör oluşturmanın en basit yolu c() fonksiyonunu kullanmaktır.
Örnek 1: Sayısal Vektör Oluşturma
# Numerical
vec_num <- c(1, 10, 49)
vec_num
Çıktı:
## [1] 1 10 49
Örnek 2: Bir Karakter Vektörü Oluşturma
# Character vec_chr <- c("a", "b", "c") vec_chr
Çıktı:
## [1] "a" "b" "c"
Örnek 3: Mantıksal Vektör Oluşturma
# Boolean vec_bool <- c(TRUE, FALSE, TRUE) vec_bool
Çıktı:
##[1] TRUE FALSE TRUE
Eğer c() fonksiyonu farklı türlerden oluşan bir karışım alırsa, başarısız olmaz. Her bir elemanı sessizce mevcut en genel türe dönüştürür, böylece c(1, "a", TRUE) bir karakter vektörü olur. R'da vektörler üzerinde aritmetik hesaplamalar da yapabiliriz.
Örnek 4: İki Vektörü Eleman Eleman Toplama
# Create the vectors vect_1 <- c(1, 3, 5) vect_2 <- c(2, 4, 6) # Take the sum of A_vector and B_vector sum_vect <- vect_1 + vect_2 # Print out total_vector sum_vect
Çıktı:
[1] 3 7 11
Her iki vektörün de uzunluğu aynı olduğundan, toplama işlemi eleman eleman çalıştı. Uzunluklar farklı olduğunda, R daha kısa vektörü geri dönüştürür, daha uzun olanla eşleşene kadar tekrarlar ve yalnızca daha uzun uzunluk daha kısa olanın katı olmadığında uyarı verir.
Örnek 5: İlk Beş Öğeyi Dilimleme
R'da bir vektörü dilimlemek mümkündür. Bazı durumlarda, bir vektörün yalnızca ilk beş elemanıyla ilgileniriz. Bunu yapmak için [1:5] komutunu kullanabiliriz.tract, 1 ile 5 arasındaki değerleri ifade eder.
# Slice the first five rows of the vector
slice_vector <- c(1,2,3,4,5,6,7,8,9,10)
slice_vector[1:5]
Çıktı:
## [1] 1 2 3 4 5
Örnek 6: İki Nokta Üst Üste Kullanarak Bir Aralık Oluşturma Operator
Değer aralığı oluşturmanın en kısa yolu, iki sayı arasına iki nokta üst üste (:) operatörünü kullanmaktır. Örneğin, yukarıdaki örnekten yola çıkarak, birden ona kadar olan değerlerin vektörünü oluşturmak için c(1:10) yazabiliriz.
# Faster way to create adjacent values
c(1:10)
Çıktı:
## [1] 1 2 3 4 5 6 7 8 9 10
Bir vektör karıştırıldığında sessizce tür değiştirdiği için, türleri gerektiğinde incelemeyi ve dönüştürmeyi bilmek faydalıdır.
R'de Veri Tiplerini Kontrol Etme ve Dönüştürme Nasıl Yapılır?
Üç fonksiyon ailesi, sürekli olarak ortaya çıkan üç soruyu yanıtlar: Bu nedir, bu belirli bir tür müdür ve bu başka bir türe dönüşebilir mi?
| Fonksiyon ailesi | Soruyu cevaplıyor | Örnekler |
|---|---|---|
| sınıf(), tür(), mod() | Bu değer ne türde? | sınıf(28), tip(28), mod(28) |
| is.*() | Bu değer X türünde mi? | sayısaldır(), karakterdir(), mantıksaldır() |
| gibi.*() | Bu değer X türüne dönüşebilir mi? | as.numeric(), as.character(), as.integer() |
| dizi() | Bu nesne genel olarak neye benziyor? | str(vec_num) |
# Three different views of the same value x <- 28 class(x) # "numeric" -- the class used for method dispatch typeof(x) # "double" -- how R stores the value internally mode(x) # "numeric" -- the older S-style mode # Ask a yes/no question about a type is.numeric(x) # TRUE is.character(x) # FALSE # Convert between types as.character(x) # "28" as.integer("28") # 28 stored as an integer as.numeric("abc") # NA, with a coercion warning
Buradaki sürprizlerin çoğunu açıklayan iki kural var. Birincisi, `class()` metodun çağrılması için kullanılan sınıfı bildirirken, `typeof()` dahili depolamayı bildirir; bu nedenle 28 biri için "numeric", diğeri için "double" olur. İkincisi, başarılı olamayan bir dönüştürme komut dosyasını durdurmaz: `as.numeric("abc")` NA döndürür ve bir dönüştürme uyarısı yazdırır, bu nedenle bir içe aktarmadan sonra sessiz NA'lar neredeyse her zaman bir tür problemidir. Aynı mantık diğerlerini de yönlendirir. faktörlerBu yapı, kategorileri tamsayı kodları ve seviye tablosu olarak saklar.
Türler belirlendikten sonra, bunlara göre işlem yapacak operatörler sıraya girer.
R Aritmetik Operaları
Öncelikle R'deki temel aritmetik operatörleri inceleyeceğiz. Aşağıda R programlama dilindeki aritmetik operatörler ve anlamları verilmiştir:
| Kullanım | Açıklama |
|---|---|
| + | Ek |
| - | Alttracyon |
| * | Çarpma |
| / | Bölünme |
| ^ veya ** | Üs |
| %% | Modulo (bölme işleminden sonra kalan) |
| %/% | Tam sayı bölme (bölüm, kalan atılır) |
Bu operatörlerin her biri vektörleştirilmiştir, bu nedenle aynı ifade tek bir değer üzerinde veya tüm bir sütun üzerinde çalışır.
Örnek 1: Toplama
# An addition
3 + 4
Çıktı:
## [1] 7
Yukarıdaki R kodunu kolayca kopyalayıp yapıştırabilirsiniz. RStudio Konsol. Bu makalede çıktı, ## ile başlayan satırlarda gösterilmektedir. Örneğin, print(" kodunu yazarsak...Guru99") konsol [1] " yazdırırGuru99", bu sayfada ## [1] " olarak gösterilecektirGuru99".
## işareti yazdırılan çıktının bir satırını gösterir ve köşeli parantez içindeki sayı ([1]), sonucun bir parçası olmayan, o satırdaki ilk değerin indeksidir.
# ile başlayan cümleler yorumdur. İstediğimiz herhangi bir notu eklemek için R betiği içinde # işaretini kullanabiliriz ve R bunu çalışma zamanında yok sayar.
Örnek 2: Çarpma
# A multiplication
3*5
Çıktı:
## [1] 15
Örnek 3: Bölme
# A division
(5+5)/2
Çıktı:
## [1] 5
Örnek 4: Üslü Sayı Alma
# Exponentiation
2^5
Çıktı:
## [1] 32
Örnek 5: Modulo
# Modulo
28%%6
Çıktı:
## [1] 4
Aritmetik işlemler sayılar üretir. Sonraki operatör grubu ise bunun yerine DOĞRU ve YANLIŞ değerlerini üretir.
R İlişkisel (Karşılaştırma) Operaları
İlişkisel operatörler iki değeri karşılaştırır ve mantıksal bir sonuç döndürür. Filtreleme için kullanılan koşulları oluşturan operatörlerdir ve aritmetik operatörlerle tamamen aynı şekilde vektörleştirilirler.
| Kullanım | Açıklama |
|---|---|
| > | Daha harika |
| < | Less göre |
| >= | Büyük veya eşit |
| <= | Less daha veya eşittir |
| == | Tam olarak eşit |
| != | Eşit değil |
a <- 10 b <- 3 a > b # TRUE a < b # FALSE a >= 10 # TRUE a <= 3 # FALSE a == b # FALSE a != b # TRUE # Relational operators are vectorised scores <- c(45, 78, 90, 62) scores >= 60 # FALSE TRUE TRUE TRUE
İki alışkanlık burada zaman kazandırır. Karşılaştırma için ==, atama için <- kullanın, çünkü bir koşulun içinde tek bir = kullanmak yaygın bir başlangıç hatasıdır. Ayrıca, ondalık sayılarda == kullanmaktan kaçının: kayan nokta yuvarlaması 0.1 + 0.2 == 0.3'ün YANLIŞ olduğu anlamına gelir, bu nedenle isTRUE(all.equal(0.1 + 0.2, 0.3)) güvenli bir testtir. Karşılaştırmalar sıralanmış veri çerçeveleri Aynı kurallara uyun.
R Mantıksal Operaları
Mantıksal operatörler ile, mantıksal koşullara bağlı olarak vektör içindeki değerleri döndürmek istiyoruz. Aşağıdaki tabloda R'de kullanılabilen mantıksal operatörler listelenmiştir.
R'deki mantıksal ifadeler [] içine alınır. İstediğimiz kadar koşullu ifade ekleyebiliriz, ancak bunları parantez içine almamız gerekir. Koşullu bir ifade oluşturmak için şu yapıyı izleyebiliriz:
variable_name[(conditional_statement)]
`variable_name` ile ifadede kullanmak istediğimiz değişkeni belirterek mantıksal ifadeyi oluşturuyoruz, örneğin `variable_name > 0`. Son olarak, mantıksal ifadeyi tamamlamak için köşeli parantezleri kullanıyoruz. Aşağıda mantıksal bir ifade örneği verilmiştir.
Örnek 1: Bir Vektörün Her Elemanını Karşılaştırın
# Create a vector from 1 to 10
logical_vector <- c(1:10)
logical_vector>5
Çıktı:
## [1]FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
Yukarıdaki çıktıda, R her değeri okur ve logical_vector>5 ifadesiyle karşılaştırır. Değer kesinlikle beşten büyükse, koşul DOĞRU, aksi takdirde YANLIŞ'tır. R, DOĞRU ve YANLIŞ değerlerinden oluşan bir vektör döndürür.
Örnek 2: Yalnızca Eşleşen Öğeleri Saklayın
Aşağıdaki örnekte, şunu göstermek istiyoruz:tracYalnızca 'kesinlikle beşten büyük' koşulunu sağlayan değerleri elde etmek için, koşulu değerleri içeren vektörün önüne köşeli parantezler içine alabiliriz.
# Print value strictly above 5
logical_vector[(logical_vector>5)]
Çıktı:
## [1] 6 7 8 9 10
Örnek 3: İki Koşulu Birleştirme
# Print 5 and 6
logical_vector <- c(1:10)
logical_vector[(logical_vector>4) & (logical_vector<7)]
Çıktı:
## [1] 5 6
Örnek 3'te tek ampersand & işaretinin kullanılmasının nedeni budur. Tek karakterli operatörler & ve | vektörleri eleman eleman karşılaştırır ve bir vektör döndürür; alt kümeleme de bunu gerektirir. Çift biçimli && ve || ise tek bir değer döndürür ve if() ve while() koşullarında yer alır. R 4.3.0&& veya || operatörlerine birden uzun bir argüman geçirmek uyarı değil, hatadır; bu nedenle iki operatör ailesi artık birbirinin yerine kullanılamaz. ! operatörü bir koşulu olumsuzlar ve xor() ise özel VEYA işlemi yapar.
R Ödevi Operaları
Atama operatörleri bir değeri bir isme bağlar. R, çoğu dilden daha fazla atama operatörü sunar ve kod bir sonraki aşamaya geçtiğinde bu farklılıklar önem kazanır. fonksiyonlar.
| Kullanım | Açıklama |
|---|---|
| <- | R'de sol atama, deyimsel seçimdir. |
| = | Sol atama, ancak normalde fonksiyon argümanları için ayrılmıştır. |
| -> | Doğru atama, geçerli ancak nadiren kullanılır. |
| << - | Çevreleyen ortamları arayan üst atama |
| - >> | Hak üst ataması |
# Left assignment -- the idiomatic form count <- 5 # Equals sign: works, but reserve it for function arguments count = 5 round(3.14159, digits = 2) # Right assignment 5 -> count # Superassignment, used inside functions to reach an outer scope count <<- 5
Stil kılavuzları, nesne oluşturmak için <- ve bir çağrı içindeki argümanları adlandırmak için = işaretini önerir, çünkü bu iki rol görsel olarak ayrı kalır. <<- işaretini nadiren kullanın: mevcut fonksiyonun dışındaki bir nesneyi değiştirir ve kodun anlaşılmasını zorlaştırır. Atama ve türler konusunda rahat olduktan sonraki adımlar şunlardır: gerçek verilerin içe aktarılması ve Reshaping onunla dplyr; R diline genel bakış Bu, tüm araç zincirini bağlam içine yerleştiriyor.

