Menu
Coddy logo textTech

Vektör Dilimleme ve İndeksleme

Coddy'nin R Journey'sinin Temeller bölümünün bir parçası — ders 67 / 78.

Tekil öğelere nasıl erişeceğinizi ve vektörler üzerinde nasıl döngü kuracağınızı öğrendiniz. Şimdi dilimleme (slicing) kullanarak aynı anda birden fazla öğeyi nasıl çıkaracağımızı keşfedelim. Bu teknik, tek bir işlemde bir vektörün alt kümesini almanızı sağlar.

Birden fazla öğeyi çıkarmak için, köşeli parantezlerin içine indekslerden oluşan bir vektör geçirin:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[c(1, 3, 5)])

Çıktı:

[1] 10 30 50

Ardışık bir dizi öğeyi seçmek için iki nokta üst üste operatörünü de kullanabilirsiniz:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[2:4])

Çıktı:

[1] 20 30 40

R'da negatif indeksler güçlüdür. Elemanları seçmek yerine hariç tutarlar:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-2])

Çıktı:

[1] 10 30 40 50

Negatif indekslerden oluşan bir vektör geçirerek birden fazla öğeyi hariç tutabilirsiniz:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-c(1, 5)])

Çıktı:

[1] 20 30 40

Unutmayın: Aynı seçimde pozitif ve negatif indeksleri karıştıramazsınız. Eğer numbers[c(1, -2)] kodunu denerseniz R bir hata verecektir.

challenge icon

Görev

Kolay

İki satırlık bir girdi alacaksınız:

  1. Virgülle ayrılmış bir sayı listesi (örneğin, 100,200,300,400,500,600,700)
  2. Hariç tutulacak bir aralığı temsil eden, virgülle ayrılmış iki dizin (örneğin, 2,5)

Aşağıdaki işlemleri gerçekleştirin:

  1. Virgülle ayrılmış sayılardan sayısal bir vektör oluşturun
  2. Bir dizin vektörü kullanarak 1, 3 ve 5. konumlardaki öğeleri yazdırın
  3. İki nokta üst üste operatörünü kullanarak 2. konumdan 4. konuma kadar olan öğeleri yazdırın
  4. Verilen ilk dizindeki öğe hariç tutulmuş vektörü yazdırın (negatif dizinleme kullanarak)
  5. İlk dizinden ikinci dizine kadar olan öğeler hariç tutulmuş vektörü yazdırın (aralıkla negatif dizinleme kullanarak)

Örneğin, girdiler şunlarsa:

10,20,30,40,50,60,70
3,5

Çıktı şöyle olmalıdır:

[1] 10 30 50
[1] 20 30 40
[1] 10 20 40 50 60 70
[1] 10 20 60 70

Açıklama:

  • 1, 3, 5. konumlardaki öğeler: 10, 30, 50
  • 2. konumdan 4. konuma kadar olan öğeler: 20, 30, 40
  • 3. konumun hariç tutulması şunları verir: 10, 20, 40, 50, 60, 70
  • 3'ten 5'e kadar olan konumların hariç tutulması şunları verir: 10, 20, 60, 70

Kopya kağıdı

Bir vektörden birden fazla öğe çıkarmak için, köşeli parantez içine bir indeks vektörü geçirin:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[c(1, 3, 5)])  # [1] 10 30 50

Ardışık öğelerden oluşan bir aralığı seçmek için iki nokta üst üste operatörünü kullanın:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[2:4])  # [1] 20 30 40

Negatif indeksler, öğeleri seçmek yerine hariç tutar:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-2])  # [1] 10 30 40 50

Negatif indekslerden oluşan bir vektör geçirerek birden fazla öğeyi hariç tutun:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-c(1, 5)])  # [1] 20 30 40

Önemli: Aynı seçim içinde pozitif ve negatif indeksleri karıştıramazsınız.

Kendin dene

# Girdiyi oku
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
indices_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(strsplit(numbers_input, ",")[[1]])

# İki indeksi ayrıştır
indices <- as.numeric(strsplit(indices_input, ",")[[1]])
idx1 <- indices[1]
idx2 <- indices[2]

# TODO: Kodunuzu aşağıya yazın
# 1. Bir indeks vektörü kullanarak 1, 3 ve 5. konumlardaki öğeleri yazdırın

# 2. İki nokta üst üste operatörünü kullanarak 2. konumdan 4. konuma kadar olan öğeleri yazdırın

# 3. idx1 konumundaki öğe hariç tutulmuş vektörü yazdırın (negatif indeksleme)

# 4. idx1'den idx2'ye kadar olan öğelerin hariç tutulduğu vektörü yazdırın (aralıkla negatif indeksleme)
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