Fungsi switch()
Termasuk bagian Logika dan Alur dalam perjalanan R di Coddy. Pelajaran 47 dari 64.
switch(x, name = value, ...) membandingkan teks x dengan nama-nama dan mengembalikan nilai yang cocok. Ini menggantikan rangkaian panjang perbandingan else if terhadap variabel yang sama:
size <- "m"
price <- switch(size, s = 2.5, m = 3, l = 3.5)
print(price)Output:
[1] 3Nilai terakhir tanpa nama adalah nilai default, yang digunakan saat tidak ada yang cocok. Tanpa nilai default, switch() yang tidak menemukan kecocokan akan mengembalikan NULL secara diam-diam:
day <- "fri"
print(switch(day, sat = "rest", sun = "rest", "work"))
print(is.null(switch("x", a = 1)))Output:
[1] "work"
[1] TRUENilai kosong diteruskan ke nilai berikutnya, sehingga beberapa nama dapat menghasilkan hasil yang sama:
kind <- function(day) switch(day, sat = , sun = "weekend", "weekday")
print(kind("sun"))
print(kind("tue"))Output:
[1] "weekend"
[1] "weekday"Nilainya bisa berupa seluruh blok kode di dalam kurung kurawal, dan hasilnya adalah ekspresi terakhir dalam blok yang dijalankan:
area <- function(shape, a, b = a) {
switch(shape,
square = a^2,
rect = a * b,
circle = {
r <- a / 2
round(pi * r^2, 2)
},
NA)
}
print(area("rect", 3, 4))
print(area("circle", 10))Output:
[1] 12
[1] 78.54Tantangan
MudahLengkapi calculate(a, op, b). op adalah salah satu dari plus, minus, times, dan over. Kembalikan hasil penerapannya pada a dan b, atau unknown operation untuk nilai op lainnya. Pembagian dengan nol mengembalikan cannot divide by zero.
Kode yang disediakan membaca a, op, dan b (masing-masing satu baris), lalu mencetak nilai yang dikembalikan.
Coba sendiri
calculate <- function(a, op, b) {
# Tulis kodemu di sini
"unknown operation"
}
# Kode input/output yang disediakan: biarkan apa adanya
input <- suppressWarnings(readLines(file("stdin")))
cat(calculate(as.numeric(input[1]), input[2], as.numeric(input[3])), sep = "\n")
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami string
Substring dengan substr()Memformat dengan sprintf()Memisahkan dan MenggabungkanMencari stringMengganti TeksRangkuman: Pembuat Nama Pengguna4Matriks
Membuat MatriksMengakses Elemen MatriksRingkasan Baris dan KolomAritmetika MatriksRangkuman: Denah Tempat Duduk10Alur Kontrol Lanjutan
Fungsi switch()ifelse() dengan operasi vektorrepeat dan breakFungsi RekursifRekap: Pengklasifikasi Nilai2Pencarian Nilai-Kunci
Pencarian pada Vector BernamaMemeriksa KunciMenambahkan dan Menghapus KunciMenelusuri NamaUlasan: Meja Saham5Proyek, Buku Nilai
Menambahkan SiswaMencatat Nilai3Set dan Penghitungan
Nilai UnikOperasi setPengujian KeanggotaanMenghitung dengan table()Ulasan: Tamu Acara6Fungsi sebagai Nilai
Fungsi AnonimMengirim FungsiMengembalikan FungsiClosure dengan StateRangkuman: Aturan Diskon9Data Frame
Membuat Data FrameKolom dan BarisMemfilter BarisMenambahkan dan MengurutkanRangkuman: Laporan Penjualan12Proyek: Pelacak Pengeluaran
Mencatat PengeluaranTotal PengeluaranLatihan sendiri: Compiler R online