Untuk mendokumentasikan kelas dengan roxygen (2), menentukan judul dan deskripsi / perincian tampaknya sama dengan untuk fungsi, metode, data, dll. Namun, slot dan pewarisan adalah jenis binatang mereka sendiri. Apa praktik terbaik - saat ini atau yang direncanakan - untuk mendokumentasikan kelas S4 di roxygen2?
Uji kelayakan:
Saya menemukan menyebutkan @slot
tag dalam deskripsi awal roxygen.
Pos milis R-forge 2008
nampaknya mengindikasikan bahwa ini sudah mati, dan tidak ada dukungan untuk @slot
di roxygen:
Apakah ini benar roxygen2? Posting yang disebutkan sebelumnya menyarankan pengguna sebagai gantinya harus membuat daftar terperinci dengan LaTeX markup. Misalnya kelas S4 baru yang memperluas "character"
kelas akan dikodekan dan didokumentasikan seperti ini:
#' The title for my S4 class that extends \code{"character"} class.
#'
#' Some details about this class and my plans for it in the body.
#'
#' \describe{
#' \item{myslot1}{A logical keeping track of something.}
#'
#' \item{myslot2}{An integer specifying something else.}
#'
#' \item{myslot3}{A data.frame holding some data.}
#' }
#' @name mynewclass-class
#' @rdname mynewclass-class
#' @exportClass mynewclass
setClass("mynewclass",
representation(myslot1="logical",
myslot2="integer",
myslot3="data.frame"),
contains = "character"
)
Namun, meskipun ini berhasil, ini \describe
, \item
pendekatan untuk mendokumentasikan slot tampaknya tidak konsisten dengan sisa roxygen (2), di mana tidak ada @
tag dan slot yang dapat direvisi tanpa dokumen tanpa keberatan dari roxygenize()
. Ia juga tidak mengatakan apa-apa tentang cara yang konsisten untuk mendokumentasikan warisan kelas yang sedang didefinisikan. Saya membayangkan ketergantungan umumnya masih berfungsi dengan baik (jika slot tertentu membutuhkan kelas non-basis dari paket lain) menggunakan @import
tag.
Jadi, untuk meringkas, apa praktik terbaik saat ini untuk slot roxygen (2)?
Tampaknya ada tiga opsi untuk dipertimbangkan saat ini:
- A - Daftar terperinci (seperti contoh di atas).
- B -
@slot
... tetapi dengan tag / implementasi tambahan saya tidak terjawab. Saya tidak bisa mendapatkan @slot untuk bekerja dengan roxygen / roxygen2 dalam versi di mana ia dimasukkan sebagai pengganti daftar item pada contoh di atas. Sekali lagi, contoh di atas tidak bekerja dengan roxygen (2).- C - Beberapa tag alternatif untuk menentukan slot, seperti
@param
, yang akan mencapai hal yang sama.
Saya meminjam / memperluas pertanyaan ini dari pos yang saya buat ke roxygen2
halaman pengembangan di github .
setClass
pernyataan daripada setMethod
. Membuat perubahan begitu @slot
diterapkan tidak akan terlalu menyakitkan.
@slot
mungkin yang Anda inginkan untuk jangka panjang, tetapi harus diimplementasikan dulu ...