У меня есть список фреймов данных
dd <- list()
dd$dat <- list(
one = data.frame(a = c(1), b = c(2)),
two = data.frame(c = c(3), d = c(4)),
three = data.frame(e = c(5), f = c(6))
)
и я написал функцию для добавления пользовательского класса к каждому фрейму данных:
# append classes
append_classes <- function(x, nm) {
class(x) <-
case_when(
nm == "one" ~ c(class(x), "foo"),
nm == "two" ~ c(class(x), "bar"),
TRUE ~ c(class(x), "custom")
)
return(x)
}
dd$dat <- imap(dd$dat, append_classes)
class(dd$dat[[1]])
Это работает!
[1] "data.frame" "foo"
Но теперь я хочу использовать наследование классов, чтобы столбцы в каждом фрейме данных наследовали классы foo
, bar
и custom
соответственно - как бы я это сделал?
Желаемый результат
class(dd$dat$one$a)
[1] "numeric" "foo"
class(dd$dat$two$d)
[1] "numeric" "bar"
Я очень новичок в использовании S3, поэтому любая помощь приветствуется !!