Если мы определим метод, as.data.frame.myclass
View()
будет работать ... если только вы не используете Rstudio, который имеет свою собственную версию, которая имеет приоритет и ведет себя по-другому.
Если вы используете utils::View()
, вы получите вывод R gui:
as.myclass <- function(x) {
class(x) <- "myclass"
return(x)
}
as.data.frame.myclass <- as.data.frame.list
utils::View(as.myclass(mtcars))
Теперь, если вы используете Rstudio, это будет немного сложнее, нам нужно переопределить и сделайте его обобщенным c:
View <- function(x, title) UseMethod("View")
View.default <- function(x, title) eval(substitute(
get("View", envir = as.environment("package:utils"))(x,title)))
View.myclass <- function(x, title) eval(substitute(
get("View", envir = as.environment("package:utils"))(as.data.frame(x),title)))
View(as.myclass(mtcars))
Было бы проще, если бы вы могли позволить себе сохранить класс data.frame
вместе с myclass:
as.myclass <- function(x) {
class(x) <- c("data.frame","myclass")
return(x)
}
View(as.myclass(mtcars)) # without overriding `View()`!