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 33Peki 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 600Burada, 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 33Tekil 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.
Görev
Kolayİki satırlık bir girdi alacaksınız:
- Taban değerlerini temsil eden virgülle ayrılmış bir sayı listesi (örneğin,
10,20,30,40,50,60) - Çarpanları temsil eden virgülle ayrılmış bir liste (örneğin,
2,5)
Vektör aritmetiği ve geri dönüşüm (recycling) kullanarak:
- Taban değerlerinden sayısal bir vektör oluşturun
- Çarpanlardan sayısal bir vektör oluşturun
- Taban değerlerini çarpanlarla çarpın (R, kısa olan vektörü geri dönüştürecektir)
- Çarpma işleminin sonucunu yazdırın
- Orijinal taban değerlerinin her bir elemanına
100ekleyin (tek değer geri dönüşümü) - Toplama işleminin sonucunu yazdırın
- Taban değerleri vektöründen çarpanlar vektörünü çıkarın
- Çı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 23Açı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*7olur - Toplama: Tekil
100değ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-7olur
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 600multiplier 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 331.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ı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ğerleri