Расширение методов as.data.frame и as.matrix для объекта, созданного с помощью setRefClass
Я создаю объект ссылочного класса способом, подобным примеру ниже:
# Class -------------------------------------------------------------------
myDataFrame <- setRefClass(Class = "myDataFrame",
fields = list(data = "data.frame",
key_columns = "character"))
# Instance ----------------------------------------------------------------
myCars <- myDataFrame$new(data = mtcars,
key_columns = c("mpg", "cyl"))
Я создаю show
метод для этого класса:
myDataFrame$methods(
show = function() {
cat(
paste("Rows:", nrow(data)),
paste("Cols:", ncol(data)),
paste("Summary for key columns:", paste(key_columns, collapse = " ")),
sep = "\n"
)
sapply(data[, key_columns], function(key_col) {
print(summary(key_col))
})
}
)
это работает как предполагалось:
>> myCars
Rows: 32
Cols: 11
Summary for key columns: mpg cyl
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
Min. 1st Qu. Median Mean 3rd Qu. Max.
4.000 4.000 6.000 6.188 8.000 8.000
проблема
Я хотел бы расширить этот класс с as.matrix
а также as.data.frame
методы.
myDataFrame$methods(
as.matrix = function() {
as.matrix(data)
}
)
Это не похоже на работу:
>> myCars$as.matrix()
Error in as.matrix(data) : unused argument (data)
>> as.matrix(myCars)
Error in as.vector(x, mode) :
cannot coerce type 'environment' to vector of type 'any'
Желаемые результаты
- За
as.matrix
в контексте предоставленного примера результат должен быть эквивалентенas.matrix(mtcars)
- За
as.data.frame
результат должен быть эквивалентенas.data.frame(mtcars[,c("mpg", "cyl")])
где отражены выбранные столбцыkey_columns
,
0 ответов
Вам нужно указать пространство имен для as.matrix, когда имя вашего метода называется тем же, например
myDataFrame$methods(
as.matrix = function() {
base::as.matrix(data)
}
)