map() ve Türlendirilmiş Çeşitleri
map(), map_dbl(), map_chr() ve map_lgl() ile listelere işlev uygulayın.
map() ve Türlendirilmiş Çeşitleri, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 1. 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.
purrr ile İşlevsel Programlama
purrr paketi, R'de işlevsel programlama için tutarlı ve tür güvenli araçlar sağlar. for döngüleri yazmak yerine bir işlevi liste veya vektör üzerinde eşlersiniz. Sonuç, anlaşılması ve birleştirilmesi daha kolay, daha temiz bir koddur.
library(purrr)
# A list of numbers
numbers <- list(1, 4, 9, 16, 25)
# Apply sqrt() to each element
result <- map(numbers, sqrt)
print(result)map() — Her Zaman Liste Döndürür
map(.x, .f), .f işlevini .x öğelerinin her birine uygular ve bir liste döndürür. Girdi bir liste, vektör veya veri çerçevesi olabilir (bu durumda sütunlar üzerinde yinelenir). Bu, map türlerinin en genel olanıdır.
library(purrr)
# Map over a character vector
fruits <- c('apple', 'banana', 'cherry')
# nchar() counts characters in each string
result <- map(fruits, nchar)
print(result) # Returns a list
print(class(result))map_dbl() — Sayısal Vektör Döndürür
map_dbl(.x, .f), .f işlevini .x üzerinde eşler ve bir sayısal (double) vektör döndürür. Herhangi bir sonuç tek bir sayısal değer değilse hata üretir; bu tür güvenliği hataları erken yakalar.
library(purrr)
groups <- list(
A = c(10, 20, 30),
B = c(5, 15, 25, 35),
C = c(100, 200)
)
# Compute mean for each group — returns a named numeric vector
means <- map_dbl(groups, mean)
print(means)
print(class(means))map_chr() — Karakter Vektörü Döndürür
map_chr(.x, .f), eşleme yaparak bir karakter vektörü döndürür. Dize özniteliklerini çıkarmak, sonuçları biçimlendirmek veya dosya yolları oluşturmak için kullanışlıdır. İşlev, her öğe için tek bir dize döndürmelidir.
library(purrr)
models <- list(
m1 = lm(mpg ~ wt, data=mtcars),
m2 = lm(mpg ~ hp, data=mtcars),
m3 = lm(mpg ~ cyl, data=mtcars)
)
# Extract the formula from each model as a string
map_chr(models, function(m) deparse(formula(m)))map_lgl() — Mantıksal Vektör Döndürür
map_lgl(.x, .f), TRUE/FALSE değerlerinden oluşan bir mantıksal vektör döndürür. Bir liste genelinde koşulları sınamak için idealdir; örneğin hangi öğelerin bir ölçütü karşıladığını denetleyebilirsiniz.
library(purrr)
datasets <- list(
df1 = data.frame(x=1:3, y=c(NA,2,3)),
df2 = data.frame(x=1:3, y=4:6),
df3 = data.frame(x=c(NA,NA,3), y=1:3)
)
# Does each data frame contain any NA values?
map_lgl(datasets, function(df) anyNA(df))map_int() — Tamsayı Vektörü Döndürür
map_int(.x, .f), bir tamsayı vektörü döndürür. İşleviniz sayımlar, dizinler veya diğer tam sayı sonuçlarını döndürdüğünde kullanın. Not: R'de length() ve nrow() tamsayı döndürür.
library(purrr)
my_lists <- list(
a = 1:10,
b = letters[1:5],
c = c(TRUE, FALSE, TRUE, TRUE)
)
# Count elements in each list item
map_int(my_lists, length)map_df() / map_dfr() — Veri Çerçevesi Döndürür
map_df(.x, .f) (diğer adı: map_dfr()), .f işlevini uygular ve sonuçları satır bazında birleştirerek tek bir veri çerçevesinde toplar. İşlev, her öğe için bir veri çerçevesi veya tibble döndürmelidir. map_dfc() ise sütunları birleştirir.
library(purrr)
files <- c('sales_q1', 'sales_q2', 'sales_q3')
# Simulate reading and labeling each file
map_df(files, function(f) {
data.frame(
file = f,
rows = sample(50:100, 1),
cols = 5
)
})~ ile Anonim İşlevler
purrr, anonim işlevler için kısa bir formül gösterimini destekler: geçerli öğeye .x ile başvurulan ~expr. Bu gösterim, function(x) expr yazma gereğini ortadan kaldırır ve kodu daha kısa tutar. Her iki biçim de aynı şekilde çalışır.
library(purrr)
numbers <- list(1, 4, 9, 16, 25)
# Three equivalent ways:
result1 <- map(numbers, function(x) x^2)
result2 <- map(numbers, ~.x^2)
result3 <- map_dbl(numbers, ~.x^2)
print(result2)
print(result3)Adlandırılmış Bir Liste Üzerinde Eşleme
.x adlandırılmış bir liste veya vektör olduğunda, map() çıktısı bu adları korur. map_dbl() ve diğer türü belirli çeşitler de adları çıktıya aktarır; böylece sonuçların ne ifade ettiği daha kolay anlaşılır.
library(purrr)
region_data <- list(
East = c(100, 120, 115, 130),
West = c(200, 195, 210, 205),
North = c(80, 85, 90, 88)
)
# Named results
map_dbl(region_data, mean)Veri Çerçevesi Sütunlarıyla map() Kullanımı
Bir veri çerçevesi, sütunlardan oluşan bir listedir. map(df, fn), fn işlevini her sütuna uygular. map_dbl() ile birlikte kullanıldığında, her sütun için bir istatistiği tek seferde hesaplamanın kısa bir yoludur.
library(purrr)
df <- data.frame(
score_a = c(85, 90, 78, 92),
score_b = c(88, 85, 80, 95),
score_c = c(92, 88, 84, 90)
)
# Mean of every column
map_dbl(df, mean)İç İçe map() Çağrıları
Çok düzeyli yineleme için map() çağrılarını iç içe kullanabilirsiniz: dıştaki map gruplar üzerinde, içteki map parametreler üzerinde çalışır. Bu yaklaşım, iç içe for döngülerinin yerine temiz ve birleştirilebilir bir yapı kullanmanızı sağlar. Okunabilirlik için iç içe geçme derinliğini 2 düzeyle sınırlayın.
library(purrr)
groups <- list(A = 1:5, B = 6:10)
functions <- list(mean=mean, sd=sd, min=min)
# Apply each function to each group
map(groups, function(g) {
map_dbl(functions, function(f) f(g))
})Kısa Kontrol
map() ile map_dbl() arasındaki temel fark nedir?
Özet: map() ve Türü Belirli Çeşitleri
map() ve türü belirli çeşitler için temel noktalar:
map(.x, .f)— her zaman bir liste döndürür; en esnek seçenektirmap_dbl()— numeric vektör döndürür; yanlış türde hata verirmap_chr()— karakter vektörü döndürürmap_lgl()— mantıksal vektör döndürürmap_int()— tamsayı vektörü döndürürmap_df()/map_dfr()— sonuçları satır bazında birleştirerek veri çerçevesine dönüştürür~.xkısa gösterimi — kısa anonim işlev söz dizimi- Adlandırılmış girdiler otomatik olarak adlandırılmış çıktılar üretir
library(purrr)
# Typed map showcase
data_list <- list(
group_A = c(10, 20, 30),
group_B = c(5, 15),
group_C = c(100, 200, 300, 400)
)
cat('Counts:', map_int(data_list, length), '\n')
cat('Means: ', map_dbl(data_list, mean), '\n')
cat('Any>50:', map_lgl(data_list, ~any(.x > 50)), '\n')Yapay zeka eğitmeniyle R öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 43
- Dersler
- 159
Sıkça Sorulan Sorular
“map() ve Türlendirilmiş Çeşitleri” dersi ücretsiz mi?
Evet — “map() ve Türlendirilmiş Çeşitleri” 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.
“map() ve Türlendirilmiş Çeşitleri” dersinde ne öğreneceğim?
map(), map_dbl(), map_chr() ve map_lgl() ile listelere işlev uygulayın. 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 1. dersidir.
“map() ve Türlendirilmiş Çeşitleri” 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
- map() ve Türlendirilmiş Çeşitleri
- Birden Fazla Girdi için map2() ve pmap()
- reduce(), accumulate() ve walk()
- keep(), discard() ve Liste Filtreleme