Video: Ujian Reformasi - Moeldoko: Tepuk Tangan untuk Mahasiswa (Part 2) | Mata Najwa 2025
Dalam beberapa kes, anda perlu membuat pelbagai pilihan dalam R. Jika dan jika … kenyataan lain meninggalkan anda dengan tepat dua pilihan, tetapi kehidupan jarang semudah itu. Bayangkan anda mempunyai beberapa pelanggan di luar negara.
Katakanlah bahawa mana-mana pelanggan di luar negara tidak perlu membayar VAT demi contohnya. Ini meninggalkan anda sekarang dengan tiga kadar VAT yang berbeza: 12 peratus untuk pelanggan swasta, 6 peratus untuk pelanggan awam, dan tidak ada untuk pelanggan asing.
Cara yang paling intuitif untuk menyelesaikan masalah ini adalah untuk mengikat pilihan. Sekiranya pelanggan tinggal di luar negara, jangan mengenakan sebarang VAT. Jika tidak, semak sama ada pelanggan itu awam atau swasta dan memohon kadar VAT yang berkaitan.
Jika anda menentukan klien argumen untuk fungsi anda yang boleh mengambil nilai-nilai 'luar negeri', 'awam', dan 'swasta', anda boleh mengodkan algoritma sebelumnya seperti ini:
if (client == 'private') {tot. harga <- bersih. harga * 1. 12 # 12% VAT} else {if (client == 'public') {tot. harga <- bersih. harga * 1. 06 # 6% VAT} else {tot. harga <- bersih. harga * 1 # 0% VAT}}
Dengan kod ini, anda sarang yang kedua jika … kenyataan lain dalam kenyataan pertama jika … lain. Itu boleh diterima dan ia akan berfungsi, tetapi bayangkan apa yang perlu anda lakukan jika anda mempunyai empat atau lebih kemungkinan. Sarang kenyataan di dalam kenyataan dalam satu kenyataan dalam satu kenyataan dengan cepat mewujudkan satu kekacauan kerinting besar.
Untungnya, R membolehkan anda menulis semua kod itu dengan lebih jelas. Anda boleh rantai jika … pernyataan lain seperti berikut:
jika (client == 'private') {tot. harga <- bersih. harga * 1. 12} else if (client == 'public') {tot. harga <- bersih. harga * 1. 06} else {tot. harga <- bersih. harga}
Dalam contoh ini, chaining membuat perbezaan hanya dua pendakap, tetapi apabila anda mempunyai lebih banyak kemungkinan, ia menjadikan kod boleh dibaca. Perhatikan, bahawa anda tidak perlu menguji sama ada klien argumen sama dengan 'luar negara' (walaupun tidak salah untuk melakukannya). Anda hanya mengandaikan bahawa jika pelanggan tidak mempunyai dua nilai lain, ia mestilah 'luar negara'.
Chained jika … kenyataan lain berfungsi pada satu nilai pada satu masa. Anda tidak boleh menggunakan rantai ini jika … kenyataan lain dalam cara vektor. Untuk itu, anda boleh sarang beberapa kenyataan ifelse, seperti ini:
VAT <- ifelse (client == 'private', 1. 12, ifelse (client == 'public', 1. 06, 1)) tot. harga <- bersih. harga * VAT
Sekeping kod ini boleh menjadi agak mengelirukan jika anda mempunyai lebih daripada tiga pilihan. Penyelesaiannya adalah untuk menukar.
