Я разрабатываю пакет и хочу написать два метода подмножества для объектов пользовательского класса myclass
с отправкой по двум аргументам, первый из которых является объектом для подмножества класса myclass
, а второй является либо логическим вектором символов, например так:
setMethod(
f = "subset",
signature = c(x = "myclass", subset = "logical"),
definition = function(x, subset){
# function body
}
)
setMethod(
f = "subset",
signature = c(x = "myclass", subset = "character"),
definition = function(x, subset){
# different function body
}
)
Однако я не могу этого сделать, потому что универсальный S3 отправляет только один аргумент. И я не хочу создавать новый дженерик для subset
, потому что он будет маскировать существующий дженерик при загрузке моего пакета. Я думаю, что одним из способов решения этой проблемы было бы создание дженерика и методов с разными именами, но это было бы не очень интуитивно понятно для пользователей, верно? Итак, я что-то упускаю/не понимаю, и есть ли какой-нибудь остроумный способ иметь несколько диспетчеров для дженериков S3?