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 bir indeks vektörü iletin:

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 oldukça 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. 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 (colon) operatörünü kullanarak 2. konumdan 4. konuma kadar olan öğeleri yazdırın
  4. Verilen ilk dizindeki öğe hariç tutulmuş şekilde vektörü yazdırın (negatif dizinleme kullanarak)
  5. İlk dizinden ikinci dizine kadar olan öğeler hariç tutulmuş şekilde vektörü yazdırın (aralıkla negatif dizinleme kullanarak)

Örneğin, girdiler şunlar ise:

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

Çıktı şu şekilde 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

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 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 ile idx2 arasındaki öğeler hariç tutulmuş 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