MulaiMulai sekarang secara gratis

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

Lihat Kursus

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 . kemudian default.
    • Argumen masukan harus x dan ....
    • 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).
  • Panggil metode Anda pada himpunan data ability.cov (docs) dan simpan hasilnya ke variabel n_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 <- ___
Edit dan Jalankan Kode