Menu
Coddy logo textTech

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  TRUE

Eş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 50

R, 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 40

Mantıksal indeksleme, veri setlerini basit ve okunabilir ifadelerle filtrelemenize olanak tanıyan, R'ın veri manipülasyonu için en güçlü özelliklerinden biridir.

challenge icon

Görev

Kolay

İki satır girdi alacaksınız:

  1. Virgülle ayrılmış bir sayı listesi (ör. 15,42,8,67,23,91,34,12,56)
  2. Bir aralığı temsil eden, virgülle ayrılmış iki eşik değeri (ör. 20,60)

Mantıksal indeksleme kullanarak:

  1. Virgülle ayrılmış sayılardan sayısal bir vektör oluşturun
  2. İlk eşikten (alt sınır) küçük olan tüm elemanları çıkarıp yazdırın
  3. İkinci eşikten (üst sınır) büyük olan tüm elemanları çıkarıp yazdırın
  4. 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 50

Açı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ın
quiz iconKendini test et

Bu 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

Kendi başına pratik yap: Online R derleyicisi