MulaiMulai sekarang secara gratis

Apa Arti Sebuah Nama?

S3 menggunakan konvensi penamaan yang ketat: semua metode S3 memiliki nama dengan bentuk generic.class.

Sebaliknya, tidak selalu benar: sebuah fungsi bisa memiliki nama yang mengandung titik tanpa menjadi metode S3. Ini terjadi pada banyak fungsi yang sudah ada sejak awal bahasa S. Misalnya, all.equal() (docs) sebenarnya adalah generic S3, bukan metode. (Ini adalah contoh bagaimana leopard.case dapat membingungkan.)

Anda dapat memeriksa apakah sebuah fungsi adalah generic S3 dengan memanggil is_s3_generic() (docs) dari paket pryr. Anda juga bisa mencetaknya (dengan mengetik namanya di konsol), lalu melihat apakah fungsi tersebut memanggil UseMethod().

Demikian pula, Anda dapat memeriksa apakah sebuah fungsi adalah metode S3 dengan memanggil is_s3_method() (docs) dari pryr. Sebagai contoh,

library(pryr)
is_s3_generic("t")           # fungsi transpose generic
is_s3_method("t.data.frame") # metode transpose untuk data.frame
is_s3_method("t.test")       # fungsi untuk uji t Student

Pernyataan mana yang benar?

  1. is.complex() (docs) adalah sebuah metode dari generic is yang bekerja pada objek complex.
  2. seq.Date() (docs) adalah sebuah metode dari generic seq yang bekerja pada objek Date.
  3. is.na.data.frame() (docs) adalah sebuah metode dari generic is.na yang bekerja pada objek data.frame.
  4. sort() (docs) adalah fungsi generic.
  5. order() (docs) adalah fungsi generic.

Latihan ini adalah bagian dari kursus

Pemrograman Berorientasi Objek dengan S3 dan R6 di R

Lihat Kursus

Latihan interaktif praktis

Ubah teori menjadi tindakan dengan salah satu latihan interaktif kami.

Mulai berolahraga