Mantıksal İndeksleme
Coddy'nin R Journey'sinin Temeller bölümünün bir parçası. Ders 68 / 78.
Kesin konumları belirtmek yerine, öğeleri seçmek için mantıksal bir vektör kullanabilirsiniz. Mantıksal indeksleme adı verilen bu teknik, bir vektörü konumlar yerine koşullara göre filtrelemenizi sağlar.
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ır girdi alacaksınız:
- Virgülle ayrılmış bir sayı listesi (ör.
15,42,8,67,23,91,34,12,56) - Bir aralığı temsil eden, virgülle ayrılmış iki eşik değeri (ör.
20,60)
Mantıksal indeksleme kullanarak:
- Virgülle ayrılmış sayılardan sayısal bir vektör oluşturun
- İlk eşikten (alt sınır) küçük olan tüm elemanları çıkarıp yazdırın
- İkinci eşikten (üst sınır) büyük olan tüm elemanları çıkarıp yazdırın
- Aralık içinde olan tüm elemanları çıkarıp yazdırın (ilk eşikten büyük veya ona eşit VE ikinci eşikten küçük veya ona eşit)
Örneğin, girdiler şöyleyse:
5,25,10,45,60,15,80,35,50
20,50Çıktı şöyle olmalıdır:
[1] 5 10 15
[1] 60 80
[1] 25 45 35 50Açıklama:
- 20'den küçük elemanlar: 5, 10, 15
- 50'den büyük elemanlar: 60, 80
- 20 ile 50 arasındaki (uç değerler dahil) elemanlar: 25, 45, 35, 50
Aralık filtresi için koşulları birleştirmek üzere & operatörünü kullanın.
Kendin 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ğerleriKendi başına pratik yap: Online R derleyicisi