Atama ve Özel İşleçler
R'deki >, %in% ve pipe işleçlerini inceleyin.
Atama ve Özel İşleçler, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.
R'de Atama
R'de değişkenlere değer atamanın çeşitli yolları vardır. En deyimsel olanı, tercih edilen yazım biçimi <- işlecidir. Atama için = işlecine de rastlarsınız; ancak bazı bağlamlarda biraz farklı davranır.
# Both assign a value, <- is preferred
name <- 'Alice'
age = 30
cat('Name:', name, '
')
cat('Age:', age, '
')Sol Ok <- ve Eşittir =
<- geçerli ortamda her zaman bir değişken oluşturur. = de atama yapabilir; ancak işlev çağrılarının içinde değişken oluşturmak yerine adlandırılmış bağımsız değişkenleri belirler. Bu ayrım önemlidir.
# <- creates a variable outside function calls
x <- 42
# = inside function call sets argument, does NOT create x
mean(x = c(1, 2, 3)) # x is an arg here, not a variable
# But <- inside a function call DOES create a variable
mean(y <- c(1, 2, 3)) # y is now also in workspace
cat('y was created:', y, '
')Sağdan Atama İşleci ->
R, -> ile sağdan sola atamayı da destekler. Bu işlem, sol taraftaki değeri sağ taraftaki ada atar. Geçerli olsa da okunabilirliği azalttığı için uygulamada nadiren kullanılır.
# Right assignment operator
100 -> max_score
'R Programming' -> course_name
cat('Max score:', max_score, '
')
cat('Course:', course_name, '
')
# Same as:
# max_score <- 100
# course_name <- 'R Programming'<<- ile Genel Atama
<<-, bir değeri yerel işlev ortamına değil, üst (kapsayan) ortamdaki bir değişkene atar. İşlevlerin içinde, işlevin dışında bulunan bir değişkeni değiştirmek için kullanılır.
counter <- 0
increment <- function() {
counter <<- counter + 1 # modifies the global counter
}
increment()
increment()
increment()
cat('Counter after 3 increments:', counter, '
')%in% Üyelik İşleci
%in%, sol taraftaki her öğenin sağ taraftaki vektörde bulunup bulunmadığını sınar. Sol işlenenle aynı uzunlukta bir mantıksal vektör döndürür. R'de bir kümeye üyeliği sınamanın en anlaşılır yolu budur.
fruits <- c('apple', 'banana', 'cherry', 'date', 'elderberry')
# Check membership
cat('Is mango in fruits?', 'mango' %in% fruits, '
')
cat('Is cherry in fruits?', 'cherry' %in% fruits, '
')
# Check multiple values at once
search <- c('banana', 'mango', 'date')
cat('Which are in fruits:', search %in% fruits, '
')%in% ile Filtreleme
%in%, vektörleri veya veri çerçevesi satırlarını filtrelemek için özellikle güçlüdür. Önceden belirlenmiş izin verilen değerler kümesine ait öğeleri seçmenizi sağlar.
countries <- c('USA', 'UK', 'Canada', 'Germany', 'France', 'Japan')
populations <- c(331, 67, 38, 83, 67, 126) # millions
# Keep only G7 European members
g7_europe <- c('UK', 'Germany', 'France', 'Italy')
mask <- countries %in% g7_europe
cat('G7 Europe countries:', countries[mask], '
')
cat('Populations:', populations[mask], '
')%*% ile Matris Çarpımı
%*%, öğeleri tek tek çarpan *'ın aksine gerçek matris çarpımı (nokta çarpımı) gerçekleştirir. A (m x n) ve B (n x p) matrisleri için sonuç (m x p) boyutunda bir matristir.
A <- matrix(c(1, 2, 3, 4), nrow = 2, ncol = 2)
B <- matrix(c(5, 6, 7, 8), nrow = 2, ncol = 2)
cat('Matrix A:
')
print(A)
cat('Matrix B:
')
print(B)
cat('A %*% B (matrix mult):
')
print(A %*% B)
cat('A * B (element-wise):
')
print(A * B)Yerel Pipe |>
R 4.1'de kullanıma sunulan yerel pipe |>, sol taraftaki ifadenin sonucunu sağ taraftaki işlevin ilk bağımsız değişkeni olarak aktarır. İşlemlerden oluşan zincirleri çok daha okunabilir hâle getirir.
# Without pipe
result1 <- round(sqrt(abs(-16)), 2)
cat('Without pipe:', result1, '
')
# With native pipe |>
result2 <- -16 |> abs() |> sqrt() |> round(2)
cat('With pipe:', result2, '
')
# Reading left to right: take -16, get abs, sqrt, then roundVektörlerle Pipe Kullanımı
Yerel pipe |>, vektörler ve sayısal işlemlerle özellikle kullanışlıdır. Ara değişkenler oluşturmadan dönüşümleri zincirleyebilir, böylece kodunuzu daha temiz ve izlenmesi daha kolay hâle getirebilirsiniz.
scores <- c(88, 45, 92, 61, 73, 55, 84, 79)
# Chain: keep passing scores, then compute mean
passing_mean <- scores |> \(x) x[x >= 60] |> mean()
cat('Mean of passing scores:', round(passing_mean, 2), '
')
# Another chain: sort, reverse, take top 3
top3 <- scores |> sort(decreasing = TRUE) |> head(3)
cat('Top 3 scores:', top3, '
')Özel Infix İşleçler
R, %name% söz dizimini kullanarak özel infix işleçler tanımlamanıza olanak tanır. dplyr gibi paketler %>% pipe'ını bu şekilde tanımlar. Belirli alanlara özgü işlemler için kendi işleçlerinizi oluşturabilirsiniz.
# Define a custom infix operator for 'not in'
'%notin%' <- function(x, table) !(x %in% table)
cities <- c('Paris', 'London', 'Berlin', 'Tokyo', 'Sydney')
exclude <- c('Tokyo', 'Sydney')
cat('Cities not in exclude list:', cities[cities %notin% exclude], '
')İşleçler için Hızlı Başvuru
Bu derste ele alınan özel işleçlerin özeti aşağıdadır:
<-— standart atama (tercih edilir)=— atama (işlev bağımsız değişkenleri için de kullanılır)<<-— genel/üst ortam ataması%in%— üyelik sınaması%*%— matris çarpımı|>— yerel pipe (R 4.1+)%name%— özel infix işleç söz dizimi
# Demonstrate %in% as a filter
all_nums <- 1:20
special <- c(3, 6, 9, 12, 15, 18)
cat('Multiples of 3 up to 20:', all_nums[all_nums %in% special], '
')
# Demonstrate pipe
1:10 |> mean() |> cat('
')Hızlı Kontrol
%in% işleci c(2, 4, 6) %in% c(1, 2, 3) olarak kullanıldığında ne döndürür?
Özet: Özel İşleçler
Harika iş çıkardınız! Bu dersten çıkarılacak temel noktalar şunlardır:
- Atama için
<-kullanın — bu, R geleneğidir =atama için çalışır; ancak işlev çağrılarının içinde belirsiz olabilir<<-, bir işlevin içinden üst (genel) ortamdaki bir değişkeni değiştirir%in%, R'de küme üyeliğini sınamanın en anlaşılır yoludur%*%matris çarpımı gerçekleştirir (öğe bazında çarpma yapmaz)- Yerel pipe
|>(R 4.1+), okunabilir kod için işlev çağrılarını soldan sağa zincirler - Özel işleçler
%name%kalıbını izler
# Pipe + %in% combined
data <- c(5, 12, 3, 8, 15, 7, 20, 1)
valid_range <- 5:15
result <- data |> \(x) x[x %in% valid_range] |> sort()
cat('Values in range 5-15:', result, '
')Sıkça Sorulan Sorular
“Atama ve Özel İşleçler” dersi ücretsiz mi?
Evet — “Atama ve Özel İşleçler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.
“Atama ve Özel İşleçler” dersinde ne öğreneceğim?
R'deki >, %in% ve pipe işleçlerini inceleyin. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
R Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Atama ve Özel İşleçler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu R Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Aritmetik ve Karşılaştırma İşleçleri
- Mantıksal İşleçler ve Boolean Mantığı
- Atama ve Özel İşleçler
- İşleç Önceliği ve Karmaşık İfadeler