Ö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.

  • 🔘 AtomIC türleri: R, her değeri mantıksal, tamsayı, ondalık sayı, karmaşık sayı, karakter veya ham sayı olarak saklar.
  • ☑️ Tip kontrolü: `class()`, `typeof()` ve `mode()` fonksiyonları bir değeri üç farklı açıdan tanımlar.
  • Vektörler: c() fonksiyonu, her elemanın tek bir türe sahip olduğu tek boyutlu bir koleksiyon oluşturur.
  • 🧪 Operator: Aritmetik, ilişkisel, mantıksal ve atama operatörleri, R'deki neredeyse tüm temel ifadeleri kapsar.
  • Alt kümeleme: Köşeli parantezler, mantıksal bir koşul filtresi vektör elemanlarıyla birlikte tek bir satırda birleştirilir.
  • ⚠️ Sürüm notu: R 4.3.0, uzunluğu birden büyük olan bir argümanın && veya || operatörüne işlenmesini hataya dönüştürdü.

R'deki Veri Türleri

R'deki Veri Türleri Nelerdir?

R Programlamada Veri Türleri veya Veri Yapıları aşağıdadır:

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 programlama dilindeki mantıksal ve ilişkisel operatörlerin anlamlarını içeren referans tablosu.

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.

SSS

Bir vektör yalnızca tek bir türden eleman tutar ve türlerin karıştırılması tür dönüştürmeye neden olur. Bir liste, diğer listeler, veri çerçeveleri veya fonksiyonlar da dahil olmak üzere her bir yuvada her şeyi tutabilir; bu nedenle model nesneleri listelerdir.

Farklı uzunluktaki iki vektör bir operatörle karşılaştığında, R uzunluklar eşleşene kadar daha kısa olanı tekrarlar. c(1,2,3,4) + c(1,2) 2 4 4 6 sonucunu verir. Yalnızca daha uzun uzunluk bir kat olmadığında bir uyarı görüntülenir.

NA, bir vektör içindeki eksik bir değeri işaretler. NULL, bir nesnenin yokluğunu işaretler ve sıfır uzunluğa sahiptir. NaN, 0/0 gibi tanımsız bir sayısal sonuçtur. Inf, 1/0 gibi sıfıra bölme anlamına gelir.

%in% operatörü üyelik durumunu test eder ve sağ taraftaki vektörde bulunan her sol taraftaki eleman için TRUE değerini döndürür. c(2,7) %in% c(1,2,3) TRUE FALSE döndürür. Uzun == karşılaştırma zincirlerini | ile birleştirerek değiştirir.

Bir seçin matris sayısal ızgaralar ve doğrusal cebir için, bir veri çerçevesi Sütun tipleri farklı olan tablolar için ve bir liste Öğelerin farklı şekillere sahip olduğu durumlarda.

R 4.1.0'da tanıtılan |> operatörü, solundaki değeri sağındaki fonksiyonun ilk argümanına aktarır. Çağrıları iç içe geçirmeden adımları zincirler ve magrittr %>% pipe'ının aksine herhangi bir pakete ihtiyaç duymaz.

Yapay zekâ asistanları, tür uyuşmazlıklarını işaretler, .* dönüşümlerini önerir ve bir satır örneğinden yeniden kodlama kodu taslağı oluşturur. Ayrıca, bir işlemden önce özellik mühendisliği adımları da önerirler. makine öğrenme Model doğru şekilde ayarlanmıştır. Oluşturulan kodu her zaman verilerinizle karşılaştırın.

Evet. RStudio 2023.09.0 ve sonraki sürümler bir özellik içeriyor. GitHub Yardımcı Pilotu R ifadelerini satır içi olarak tamamlayan entegrasyon. Copilot aboneliği gereklidir ve yöneticilerin bunu RStudio Server veya Posit Workbench'te etkinleştirmesi gerekir.

Bu yazıyı şu şekilde özetleyin: