Mantıksal İndeksleme
Coddy'nin R Journey'sinin Temeller bölümünün bir parçası — ders 68 / 78.
Tam konumları belirtmek yerine, öğeleri seçmek için mantıksal bir vektör kullanabilirsiniz. Mantıksal indeksleme (logical indexing) adı verilen bu teknik, bir vektörü konumlardan ziyade koşullara göre filtrelemenize olanak tanır.
Bir vektöre karşılaştırma uyguladığınızda, R aynı uzunlukta mantıksal bir vektör döndürür:
numbers <- c(10, 20, 30, 40, 50)
print(numbers > 25)Çıktı:
[1] FALSE FALSE TRUE TRUE TRUEEşleşen öğeleri çıkarmak için bu mantıksal vektörü doğrudan köşeli parantez içinde kullanabilirsiniz:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers > 25])Çıktı:
[1] 30 40 50R, yalnızca mantıksal vektörün TRUE olduğu öğeleri tutar. Bu yaklaşım, verileri filtrelemek için döngüler yazmaktan çok daha temizdir. Mantıksal operatörleri kullanarak koşulları birleştirebilirsiniz:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers >= 20 & numbers <= 40])Çıktı:
[1] 20 30 40Mantıksal indeksleme, veri setlerini basit ve okunabilir ifadelerle filtrelemenize olanak tanıyan, R'ın veri manipülasyonu için en güçlü özelliklerinden biridir.
Görev
Kolayİki satırlık bir girdi alacaksınız:
- Virgülle ayrılmış bir sayı listesi (örneğin,
15,42,8,67,23,91,34,12,56) - Bir aralığı temsil eden, virgülle ayrılmış iki eşik değeri (örneğin,
20,60)
Mantıksal indeksleme (logical indexing) kullanarak:
- Virgülle ayrılmış sayılardan sayısal bir vektör oluşturun
- İlk eşik değerinden (alt sınır) küçük olan tüm öğeleri ayıklayın ve yazdırın
- İkinci eşik değerinden (üst sınır) büyük olan tüm öğeleri ayıklayın ve yazdırın
- Aralık içinde olan (ilk eşik değerine eşit veya ondan büyük VE ikinci eşik değerine eşit veya ondan küçük) tüm öğeleri ayıklayın ve yazdırın
Örneğin, girdiler şunlar ise:
5,25,10,45,60,15,80,35,50
20,50Çıktı şu şekilde olmalıdır:
[1] 5 10 15
[1] 60 80
[1] 25 45 35 50Açıklama:
- 20'den küçük öğeler: 5, 10, 15
- 50'den büyük öğeler: 60, 80
- 20 ile 50 arasındaki (dahil) öğeler: 25, 45, 35, 50
Aralık filtresi için koşulları birleştirmek üzere & operatörünü kullanın.
Kopya kağıdı
Mantıksal indeksleme, bir vektörü konumlar yerine koşullara göre filtrelemenize olanak tanır. Bir vektöre karşılaştırma uyguladığınızda, R mantıksal bir vektör döndürür:
numbers <- c(10, 20, 30, 40, 50)
print(numbers > 25)
# Output: [1] FALSE FALSE TRUE TRUE TRUEEşleşen öğeleri çıkarmak için köşeli parantez içinde mantıksal vektörü kullanın:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers > 25])
# Output: [1] 30 40 50& (VE) gibi mantıksal operatörleri kullanarak koşulları birleştirin:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers >= 20 & numbers <= 40])
# Output: [1] 20 30 40Kendin dene
# Girişi oku
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
thresholds_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# Virgülle ayrılmış sayıları sayısal bir vektöre dönüştür
numbers <- as.numeric(unlist(strsplit(numbers_input, ",")))
# Eşik değerlerini ayrıştır
thresholds <- as.numeric(unlist(strsplit(thresholds_input, ",")))
lower_bound <- thresholds[1]
upper_bound <- thresholds[2]
# TODO: Kodunuzu aşağıya yazın
# 1. lower_bound'dan küçük öğeleri çıkarmak için mantıksal indeksleme kullanın ve yazdırın
# 2. upper_bound'dan büyük öğeleri çıkarmak için mantıksal indeksleme kullanın ve yazdırın
# 3. Aralık içindeki (dahil) öğeleri çıkarmak için & operatörü ile mantıksal indeksleme kullanın ve yazdırınBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4Operatörler Bölüm 2
Mantıksal Operatörler (AND, OR)Mantıksal Operatörler Bölüm 2 (NOT)Özet - Basit MantıkVektörize Mantık Bölüm 1Vektörize Mantık Bölüm 27Hesap Paylaşım Hesaplayıcısı
Hoş Geldiniz MesajıKullanıcıdan Girdi Alma10Farklı Bir FizzBuzz
Oyuna Genel BakışFizzBuzz Fonksiyonu13İleri Seviye Vektörler
Vektör Dilimleme ve İndekslemeMantıksal İndekslemeVektör Aritmetiği ve Geri Dönüşüm%in% Operatörü2Değişkenler ve Veri Tipleri
Sayısal Veri TipiTam Sayı Veri TipiKarakter Veri TipiMantıksal Veri TipiVeri Tiplerini Kontrol Etmeİsimlendirme KurallarıEksik Değerler: NAÖzet - Değişken Oluşturma8Döngüler
For DöngüsüWhile DöngüsüBreakNext (Continue)Özet - FaktöriyelDizi Oluşturma (seq, :)İç İçe DöngülerÖzet - Dinamik Girdi3Operatörler 1. Bölüm
Aritmetik OperatörlerTam Sayı Bölmesi ve Mod AlmaAtama OperatörleriÖzet - Basit MatematikKarşılaştırma Operatörleri6Temel Giriş-Çıkış
Print ÇıktısıÇıktı için Cat KullanımıDeğişkenlerle Çıktı Almakreadline() ile Girdi OkumaTip Dönüşümü TemelleriÖzet - Yaş HesaplayıcıÖzet - Doğru mu Yanlış mı9Fonksiyonlar
Fonksiyon TanımlamaFonksiyon ArgümanlarıDönüş DeğerleriÖzet - Sigma FonksiyonuÖzet - Doğrulama FonksiyonuVarsayılan Parametre Değerleri