Aritmetika Vektor dan Daur Ulang
Termasuk bagian Dasar-Dasar dalam perjalanan R di Coddy. Pelajaran 69 dari 78.
Saat kamu melakukan operasi aritmetika antara dua vektor dengan panjang yang sama, R menerapkan operasi tersebut elemen demi elemen:
a <- c(1, 2, 3)
b <- c(10, 20, 30)
print(a + b)Output:
[1] 11 22 33Namun, apa yang terjadi jika panjang vektornya berbeda? R menggunakan perilaku yang disebut daur ulang. Vektor yang lebih pendek diulang agar panjangnya sama dengan vektor yang lebih panjang:
numbers <- c(1, 2, 3, 4, 5, 6)
multiplier <- c(10, 100)
print(numbers * multiplier)Output:
[1] 10 200 30 400 50 600Di sini, multiplier didaur ulang menjadi c(10, 100, 10, 100, 10, 100) sebelum perkalian. Ini sangat berguna saat mengoperasikan satu nilai:
prices <- c(10, 20, 30)
print(prices * 1.1)Output:
[1] 11 22 33Nilai tunggal 1.1 digunakan kembali agar panjangnya sesuai dengan prices. Berhati-hatilah saat panjang vektor yang lebih panjang bukan kelipatan dari vektor yang lebih pendek, karena R tetap akan melakukan operasi tersebut, tetapi mungkin menampilkan peringatan tentang penggunaan ulang sebagian.
Tantangan
MudahKamu akan menerima dua baris input:
- Daftar angka yang dipisahkan dengan koma, yang mewakili nilai dasar (misalnya,
10,20,30,40,50,60) - Daftar pengali yang dipisahkan dengan koma (misalnya,
2,5)
Dengan menggunakan aritmetika vektor dan daur ulang:
- Buat vektor numerik dari nilai dasar
- Buat vektor numerik dari pengali
- Kalikan nilai dasar dengan pengali (R akan mendaur ulang vektor yang lebih pendek)
- Cetak hasil perkalian
- Tambahkan
100ke setiap elemen nilai dasar asli (daur ulang satu nilai) - Cetak hasil penjumlahan
- Kurangi vektor pengali dari vektor nilai dasar
- Cetak hasil pengurangan
Contohnya, jika inputnya adalah:
5,10,15,20,25,30
3,7Outputnya seharusnya:
[1] 15 70 45 140 75 210
[1] 105 110 115 120 125 130
[1] 2 3 12 13 22 23Penjelasan:
- Perkalian: Pengali
c(3, 7)didaur ulang menjadic(3, 7, 3, 7, 3, 7), sehingga menghasilkan5*3, 10*7, 15*3, 20*7, 25*3, 30*7 - Penjumlahan: Nilai tunggal
100didaur ulang untuk ditambahkan ke setiap elemen - Pengurangan: Pengali didaur ulang lagi, sehingga menghasilkan
5-3, 10-7, 15-3, 20-7, 25-3, 30-7
Coba sendiri
# Baca input
con <- file("stdin", "r")
base_input <- suppressWarnings(readLines(con, n = 1))
multipliers_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# Ubah nilai yang dipisahkan koma menjadi vektor numerik
base_values <- as.numeric(strsplit(base_input, ",")[[1]])
multipliers <- as.numeric(strsplit(multipliers_input, ",")[[1]])
# TODO: Tulis kodemu di bawah ini
# 1. Kalikan base_values dengan multipliers (nilai akan didaur ulang secara otomatis)
# 2. Cetak hasil perkalian
# 3. Tambahkan 100 ke setiap elemen base_values
# 4. Cetak hasil penjumlahan
# 5. Kurangi base_values dengan multipliers
# 6. Cetak hasil penguranganPelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
4Operator Bagian 2
Operator Logika (AND, OR)Operator Logika Bagian 2 (NOT)Rangkuman: Logika SederhanaLogika Tervektorisasi Bagian 1Logika Tervektorisasi Bagian 27Kalkulator Pembagi Tagihan
Pesan Selamat DatangMenerima Input Pengguna10FizzBuzz dengan Sentuhan Unik
Ikhtisar PermainanFungsi FizzBuzz13Vektor Lanjutan
Pemotongan dan Pengindeksan VektorPengindeksan LogisAritmetika Vektor dan Daur UlangOperator %in%2Variabel dan Tipe Data
Tipe Data NumerikTipe Data IntegerTipe Data KarakterTipe Data LogikaMemeriksa Tipe DataKonvensi PenamaanNilai yang Hilang: NARingkasan: Membuat Variabel8Perulangan
For LoopWhile LoopBreakBerikutnya (Continue)Ringkasan: FaktorialPembuatan Urutan (seq, :)Loop BersarangRingkasan: Input Dinamis3Operator Bagian 1
Operator AritmetikaPembagian Bilangan Bulat dan ModuloOperator PenugasanRangkuman: Matematika SederhanaOperator Perbandingan6Dasar input/output
Cetak outputcat untuk outputOutput dengan variabelMembaca input dengan readline()Dasar konversi tipe dataRingkasan: Kalkulator usiaRingkasan: Benar atau salah9Fungsi
Mendeklarasikan FungsiArgumen FungsiNilai KembalianUlasan: Fungsi SigmaUlasan: Fungsi ValidasiNilai Parameter Default12Melakukan Iterasi pada Urutan
Mengiterasi Elemen VektorMenggunakan seq_along()Mengiterasi Karakter (strsplitFungsi Manipulasi stringLatihan sendiri: Compiler R online