Video: Африканская тематика-МЕГА мастер-класс! #DIY #Африканскийдекор #DIYмаскаизкартона 2025
Menggunakan gelung dalam R sangat berguna, tetapi anda boleh menulis kod yang lebih cekap jika anda bukan nilai tetapi melebihi indeks. Untuk melakukannya, anda menggantikan bahagian tengah dalam fungsi dengan kod berikut:
nclient <- length (client) VAT <- numeric (nclient) for (i in seq_along (client) suis (client [i], private = 1. 12, public = 1. 06, 1))}
Berikut adalah beberapa perbezaan daripada menggunakan nilai vektor untuk perulangan:
-
Anda memperuntukkan panjang pelanggan vektor kepada nclient variable.
-
Kemudian anda membuat VAT vektor angka yang betul-betul selagi klien vektor. Ini dipanggil pra-peruntukan vektor.
-
Kemudian anda melangkau ke atas indeks klien dan bukannya vektor itu sendiri dengan menggunakan fungsi seq_along (). Dalam lulus pertama melalui gelung, nilai pertama dalam VAT ditetapkan sebagai akibat dari sakelar () diterapkan pada nilai pertama dalam klien. Dalam lulus kedua, nilai kedua VAT adalah hasil daripada suis () yang digunakan untuk nilai kedua dalam klien dan sebagainya.
Anda mungkin tergoda untuk menggantikan seq_along (klien) dengan vektor 1: nclient, tetapi itu akan menjadi idea yang tidak baik. Jika pelanggan vektor mempunyai panjang 0, seq_along (klien) membuat vektor kosong dan kod dalam gelung tidak pernah dilaksanakan. Jika anda menggunakan 1: nclient, R membuat vektor c (1, 0) dan gelung ke atas kedua-dua nilai tersebut, memberikan anda hasil yang benar-benar salah.
Setiap kali anda memanjangkan objek dalam R, R harus menyalin seluruh objek dan mengalihkannya ke tempat baru dalam memori. Ini mempunyai dua kesan:
-
Pertama, ia memperlambat kod anda, kerana semua penyalinan memerlukan masa.
-
Kedua, sebagai R terus bergerak di sekeliling dalam ingatan, memori ini akan berpecah dalam banyak ruang kecil.
Ini dipanggil pemecahan , dan ia menjadikan komunikasi antara R dan memori kurang lancar. Anda boleh mengelakkan pemecahan ini dengan memori pra-mengagihkan seperti dalam contoh terdahulu.
