Membuat metode S3 (2)
Jika tidak ada metode yang sesuai untuk sebuah generic, maka akan terjadi galat. Sebagai contoh, saat ini get_n_elements() hanya memiliki metode untuk data.frame. Jika Anda memberikan matriks ke get_n_elements(), Anda akan melihat galat.
> get_n_elements(matrix())
Error: no applicable method for 'get_n_elements' applied to an object of class "c('matrix', 'array', 'logical')"
Alih-alih harus menulis puluhan metode untuk setiap jenis masukan, Anda dapat membuat sebuah metode yang menangani semua tipe yang tidak memiliki metode spesifik. Ini disebut metode default; namanya selalu generic.default. Sebagai contoh, print.default() (docs) akan mencetak objek apa pun yang tidak memiliki metode print() (docs) sendiri.
Latihan ini adalah bagian dari kursus
Pemrograman Berorientasi Objek dengan S3 dan R6 di R
Petunjuk latihan
Fungsi generic get_n_elements() dan sebuah metode untuk data.frame telah didefinisikan di workspace Anda.
- Gunakan
ls.str()(docs) untuk menelusuri workspace Anda. - Tulis metode default S3 untuk
get_n_elements().- Nama fungsinya harus nama generic, lalu
.kemudiandefault. - Argumen masukan harus
xdan.... - Isi fungsi harus satu baris, mengembalikan jumlah elemen dalam sebuah objek arbitrer. Gunakan teknik yang sama seperti pada permainan catur di latihan Make it Classy (1).
- Nama fungsinya harus nama generic, lalu
- Panggil metode Anda pada himpunan data
ability.cov(docs) dan simpan hasilnya ke variabeln_elements_ability.cov.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# View predefined objects
___
# Create a default method for get_n_elements
___ <- ___
# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___