以下の例のような方法で参照クラスオブジェクトを作成しています。
# 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
。メソッド名が同じものと呼ばれる場合は、as.matrixの名前空間を指定する必要があります。
myDataFrame$methods(
as.matrix = function() {
base::as.matrix(data)
}
)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加