Đối với các lớp tài liệu với roxygen (2), việc chỉ định một tiêu đề và mô tả / chi tiết dường như giống với các hàm, phương thức, dữ liệu, v.v. Tuy nhiên, khe và thừa kế là loại động vật riêng của chúng. Cách thực hành tốt nhất - hiện tại hoặc theo kế hoạch - để ghi lại các lớp S4 trong roxygen2 là gì?
Do siêng năng:
Tôi thấy đề cập đến một @slot
thẻ trong các mô tả ban đầu của roxygen.
Một bài đăng danh sách gửi thư R-forge năm 2008
dường như chỉ ra rằng điều này đã chết và không có hỗ trợ nào @slot
trong roxygen:
Điều này có đúng với roxygen2 không? Bài đăng được đề cập trước đó cho thấy người dùng nên tạo danh sách ghi thành từng mục của riêng họ với đánh dấu LaTeX. Ví dụ, một lớp S4 mới mở rộng "character"
lớp sẽ được mã hóa và ghi lại như sau:
#' 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"
)
Tuy nhiên, mặc dù điều này hoạt động, \describe
nhưng \item
cách tiếp cận này để ghi lại các vị trí có vẻ không phù hợp với phần còn lại của roxygen (2), trong đó không có @
thẻ và giới hạn nào có thể không được ghi nhận mà không bị phản đối roxygenize()
. Nó cũng không nói gì về một cách nhất quán để ghi lại sự kế thừa của lớp được định nghĩa. Tôi tưởng tượng sự phụ thuộc nói chung vẫn hoạt động tốt (nếu một vị trí cụ thể yêu cầu lớp không cơ sở từ gói khác) sử dụng @import
thẻ.
Vì vậy, để tóm tắt, thực tiễn tốt nhất hiện nay cho các khe roxygen (2) là gì?
Có vẻ như có ba lựa chọn để xem xét tại thời điểm này:
- A - Danh sách cụ thể hóa (như ví dụ ở trên).
- B -
@slot
... nhưng với các thẻ bổ sung / triển khai tôi đã bỏ lỡ. Tôi đã không thể để @slot hoạt động với roxygen / roxygen2 trong các phiên bản mà nó được đưa vào để thay thế cho danh sách được ghi thành từng mục trong ví dụ trên. Một lần nữa, ví dụ trên không hoạt động với roxygen (2).- C - Một số thẻ thay thế để chỉ định vị trí, như
@param
, sẽ hoàn thành điều tương tự.
Tôi đang mượn / mở rộng câu hỏi này từ một bài đăng tôi đã viết cho roxygen2
trang phát triển trên github .
setClass
câu lệnh hơn setMethod
. Thực hiện thay đổi một lần @slot
sẽ không quá đau đớn.
@slot
có lẽ là những gì bạn muốn lâu dài, nhưng nó phải được thực hiện trước tiên ...