Lấy hàm names
: đó là hàm primitve trong R. Đối với hàm nguyên thủy, tạo chung S4 chung, do đó có thể xây dựng phương thức S4 cho hàm đó.Thêm đối số thừa vào hàm chung chung S4 cho hàm nguyên thủy
Tham dự một lớp S4 quy định như sau:
setClass("aClass",
representation=list(
values = "character",
id = "numeric"
),
prototype=list(
values = character(0),
id = numeric(0)),
validity=function(object){
length([email protected])==length([email protected])
}
)
Bây giờ tôi muốn tạo một hàm để trích xuất các tên, hoặc sắp xếp hoặc không được phân loại. Tôi muốn làm điều này bằng cách sử dụng hàm names
để tránh phải tạo một hàm mới getNames()
hoặc bất kỳ thứ gì, vì điều đó ít trực quan hơn.
Sau đây là một ý tưởng về những gì cần phải được thực hiện:
setMethod("names",signature="aClass",
function(x,ordered=TRUE){
if(ordered)
[email protected][[email protected]]
else
[email protected]
}
này sẽ không làm việc, như names
là một chức năng nguyên thủy và ordered
không phải là một cuộc tranh cãi cho ngầm chung.
Làm thế nào tôi có thể làm cho công việc này theo những điều kiện sau:
- các
names
chức năng nên giữ thái độ ban đầu của nó cho tất cả các đối tượng khác, trong đó có các đối tượng từ các gói khác. - mã phải được chấp nhận để sử dụng trong gói
- mã phải được chấp nhận bởi các tiêu chuẩn cao được đặt bởi ví dụ: Bioconductor.
Cảm ơn câu trả lời, nhưng đó là những gì tôi đã nói trong câu hỏi của mình: Tôi không thể sử dụng đối số thừa. Các chỉ số bằng số cho các tên được đặt hàng và một bộ các khe khác (đối tượng thực tế phức tạp hơn nhiều và không phải tất cả các khe có thể được đặt hàng). Tôi sử dụng một khe phụ để cho biết liệu đối tượng đã được đặt hàng hay chưa. Tôi có một chặng đường dài xung quanh để "unorder" tên theo thứ tự. Nhưng tôi hy vọng sẽ tìm được cách để làm điều này mà không cần phải hack. Một biến toàn cầu gói là loại hack mà tôi thậm chí sẽ không xem xét một tùy chọn hợp lệ. :) –
Có từ câu hỏi của bạn có vẻ như bạn biết câu trả lời là không, nhưng kể từ khi bạn hỏi câu hỏi, tôi đã trả lời;) –
Tôi hy vọng có một số cách xung quanh tôi đã không nhận thức được, nhưng tôi sợ tôi ' sẽ phải giải quyết với một "không" :) Tôi cho nó một vài ngày nữa, và sau đó bạn có câu trả lời được chấp nhận của bạn. –