Menu
Coddy logo textTech

Vektör Aritmetiği ve Geri Dönüşüm

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

Aynı uzunluktaki iki vektör arasında aritmetik işlemler gerçekleştirdiğinizde, R işlemi eleman bazında uygular:

a <- c(1, 2, 3)
b <- c(10, 20, 30)
print(a + b)

Çıktı:

[1] 11 22 33

Peki vektörler farklı uzunluklara sahip olduğunda ne olur? R, recycling (geri dönüşüm) adı verilen bir davranış kullanır. Kısa olan vektör, uzun olanın uzunluğuna uyacak şekilde tekrarlanır:

numbers <- c(1, 2, 3, 4, 5, 6)
multiplier <- c(10, 100)
print(numbers * multiplier)

Çıktı:

[1]  10 200  30 400  50 600

Burada, multiplier çarpma işleminden önce c(10, 100, 10, 100, 10, 100) haline gelecek şekilde geri dönüştürüldü. Bu, özellikle tek bir değerle işlem yaparken kullanışlıdır:

prices <- c(10, 20, 30)
print(prices * 1.1)

Çıktı:

[1] 11 22 33

Tekil 1.1 değeri, prices uzunluğuna uyacak şekilde geri dönüştürülür. Uzun vektörün uzunluğu kısa olanın tam katı olmadığında dikkatli olun; R işlemi yine de gerçekleştirecektir ancak kısmi geri dönüşüm hakkında bir uyarı verebilir.

challenge icon

Görev

Kolay

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

  1. Taban değerlerini temsil eden virgülle ayrılmış bir sayı listesi (örneğin, 10,20,30,40,50,60)
  2. Çarpanları temsil eden virgülle ayrılmış bir liste (örneğin, 2,5)

Vektör aritmetiği ve geri dönüşüm (recycling) kullanarak:

  1. Taban değerlerinden sayısal bir vektör oluşturun
  2. Çarpanlardan sayısal bir vektör oluşturun
  3. Taban değerlerini çarpanlarla çarpın (R, kısa olan vektörü geri dönüştürecektir)
  4. Çarpma işleminin sonucunu yazdırın
  5. Orijinal taban değerlerinin her bir elemanına 100 ekleyin (tek değer geri dönüşümü)
  6. Toplama işleminin sonucunu yazdırın
  7. Taban değerleri vektöründen çarpanlar vektörünü çıkarın
  8. Çıkarma işleminin sonucunu yazdırın

Örneğin, girdiler şunlar ise:

5,10,15,20,25,30
3,7

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

[1]  15  70  45 140  75 210
[1] 105 110 115 120 125 130
[1]  2  3 12 13 22 23

Açıklama:

  • Çarpma: c(3, 7) çarpanları c(3, 7, 3, 7, 3, 7) şeklinde geri dönüştürülür, sonuç 5*3, 10*7, 15*3, 20*7, 25*3, 30*7 olur
  • Toplama: Tekil 100 değeri her elemana eklenmek üzere geri dönüştürülür
  • Çıkarma: Çarpanlar tekrar geri dönüştürülür, sonuç 5-3, 10-7, 15-3, 20-7, 25-3, 30-7 olur

Kopya kağıdı

Farklı uzunluktaki vektörler arasında aritmetik işlemler gerçekleştirirken, R recycling (geri dönüşüm) kullanır - kısa olan vektör, uzun olanın uzunluğuna uyacak şekilde tekrarlanır:

numbers <- c(1, 2, 3, 4, 5, 6)
multiplier <- c(10, 100)
print(numbers * multiplier)

Çıktı:

[1]  10 200  30 400  50 600

multiplier vektörü, çarpma işleminden önce c(10, 100, 10, 100, 10, 100) şeklinde geri dönüştürülür.

Tek değer geri dönüşümü özellikle yararlıdır:

prices <- c(10, 20, 30)
print(prices * 1.1)

Çıktı:

[1] 11 22 33

1.1 değeri, prices uzunluğuna uyacak şekilde geri dönüştürülür.

Not: Uzun vektörün uzunluğu kısa olanın tam katı olmadığında R bir uyarı verebilir.

Kendin dene

# Girdiyi oku
con <- file("stdin", "r")
base_input <- suppressWarnings(readLines(con, n = 1))
multipliers_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# Virgülle ayrılmış değerleri sayısal vektörlere dönüştür
base_values <- as.numeric(strsplit(base_input, ",")[[1]])
multipliers <- as.numeric(strsplit(multipliers_input, ",")[[1]])

# TODO: Kodunuzu aşağıya yazın
# 1. base_values değerlerini multipliers ile çarpın (geri dönüşüm otomatik olarak gerçekleşecektir)
# 2. Çarpma sonucunu yazdırın
# 3. base_values'un her bir öğesine 100 ekleyin
# 4. Toplama sonucunu yazdırın
# 5. base_values'tan multipliers değerlerini çıkarın
# 6. Çıkarma sonucunu 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