Я не совсем уверен, что это то, что вы ищете, но звучит так, как будто вы хотите иметь возможность определить обобщенную c функцию, которая специализируется для ваших MyDF
и data.frame
, например this представьте
MyDF <- setClass(Class = "MyDF",
slots = c(source = "character"),
contains = c("data.frame"))
setGeneric("dosmth", function(x) message("Can only dosmth to a df or MyDF"))
setMethod("dosmth", signature("data.frame"),
function(x) message(sprintf("num of rows: %d", nrow(x))))
setMethod("dosmth", signature("MyDF"),
function(x) message(sprintf("Oh my! My DF! From %s!", x@source)))
a_df <- data.frame(a = 1, b = 2)
a_MyDF <- MyDF(a_df, source = "my nose")
dosmth("my nose")
#> Can only dosmth to a df or MyDF
dosmth(a_df)
#> num of rows: 1
dosmth(a_MyDF)
#> Oh my! My DF! From my nose!
Спасибо @JDL за комментарий, указывающий, что нам не нужен дополнительный слот "data.frame", так что поведение data.frame может быть унаследовано правильно, как в следующем примере показывает:
a_MyDF[1,]
#> a b
#> 1 1 2
Создано в 2020-04-17 пакетом Представить (v0.3.0)