setRefClassを介して作成されたオブジェクトのas.data.frameメソッドとas.matrixメソッドを拡張する

コンラッド

以下の例のような方法で参照クラスオブジェクトを作成しています。

# 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.matrixas.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]

編集
0

コメントを追加

0

関連記事

分類Dev

SparkRのオブジェクト「FormalDataFrame」でas.data.frame.matrixメソッドを実行する方法

分類Dev

TypeScriptを使用して作成されたすべてのオブジェクトまたは参照への拡張メソッドを作成したい

分類Dev

CrudRepositoryを拡張し、Spring Data JPAでカスタムメソッドの独自の実装を作成する

分類Dev

data.frameオブジェクトとmatrixオブジェクトの異なるサブセット化メソッド間の時間差

分類Dev

getOneメソッドとfindOneメソッドを使用する場合、Spring Data JPA

分類Dev

既存のオブジェクトメソッドを拡張する

分類Dev

拡張メソッドのソースを理解する

分類Dev

オブジェクトの作成時に呼び出される拡張メソッドを作成することはできますか?

分類Dev

拡張するオブジェクトが作成されるとすぐにクラスメソッドを呼び出します

分類Dev

IRBのメインメソッドを拡張する

分類Dev

Kotlinの拡張メソッドとしてJavaの静的メソッドを使用する

分類Dev

新しいメソッドを使用して作成されたオブジェクトをモックする方法

分類Dev

`alias`キーワードでメソッドを拡張する

分類Dev

拡張されたscalaクラス内でメソッドを拡張することは可能ですか?

分類Dev

Ruby - splat を使って super でメソッドを拡張する

分類Dev

拡張クラスのメソッドを変更する

分類Dev

拡張メソッドとしてラムダを渡す

分類Dev

メソッド拡張を引数として渡す

分類Dev

ToJsonAsync拡張メソッドを作成する方法は?

分類Dev

静的メソッドでクラスを拡張するTypeScript宣言。

分類Dev

クラスメソッドを拡張する方法

分類Dev

リストに拡張メソッドを追加する

分類Dev

新しい例外をスローする拡張メソッド

分類Dev

VSIX拡張内に「拡張メソッド」をデプロイする方法は?

分類Dev

拡張メソッドで配列の型を使用する

分類Dev

無数のメソッドC#を拡張する

分類Dev

ByteBuddy変換中にメソッドを拡張する方法は?

分類Dev

列挙型に拡張メソッドを追加する方法

分類Dev

Kotlin拡張メソッドを整理する方法

Related 関連記事

  1. 1

    SparkRのオブジェクト「FormalDataFrame」でas.data.frame.matrixメソッドを実行する方法

  2. 2

    TypeScriptを使用して作成されたすべてのオブジェクトまたは参照への拡張メソッドを作成したい

  3. 3

    CrudRepositoryを拡張し、Spring Data JPAでカスタムメソッドの独自の実装を作成する

  4. 4

    data.frameオブジェクトとmatrixオブジェクトの異なるサブセット化メソッド間の時間差

  5. 5

    getOneメソッドとfindOneメソッドを使用する場合、Spring Data JPA

  6. 6

    既存のオブジェクトメソッドを拡張する

  7. 7

    拡張メソッドのソースを理解する

  8. 8

    オブジェクトの作成時に呼び出される拡張メソッドを作成することはできますか?

  9. 9

    拡張するオブジェクトが作成されるとすぐにクラスメソッドを呼び出します

  10. 10

    IRBのメインメソッドを拡張する

  11. 11

    Kotlinの拡張メソッドとしてJavaの静的メソッドを使用する

  12. 12

    新しいメソッドを使用して作成されたオブジェクトをモックする方法

  13. 13

    `alias`キーワードでメソッドを拡張する

  14. 14

    拡張されたscalaクラス内でメソッドを拡張することは可能ですか?

  15. 15

    Ruby - splat を使って super でメソッドを拡張する

  16. 16

    拡張クラスのメソッドを変更する

  17. 17

    拡張メソッドとしてラムダを渡す

  18. 18

    メソッド拡張を引数として渡す

  19. 19

    ToJsonAsync拡張メソッドを作成する方法は?

  20. 20

    静的メソッドでクラスを拡張するTypeScript宣言。

  21. 21

    クラスメソッドを拡張する方法

  22. 22

    リストに拡張メソッドを追加する

  23. 23

    新しい例外をスローする拡張メソッド

  24. 24

    VSIX拡張内に「拡張メソッド」をデプロイする方法は?

  25. 25

    拡張メソッドで配列の型を使用する

  26. 26

    無数のメソッドC#を拡張する

  27. 27

    ByteBuddy変換中にメソッドを拡張する方法は?

  28. 28

    列挙型に拡張メソッドを追加する方法

  29. 29

    Kotlin拡張メソッドを整理する方法

ホットタグ

アーカイブ