27

専門用語と短いサンプルコードについて少し助けが必要です。さまざまな種類のオブジェクトには、オブジェクトの名前を入力して Enter キーを押すと、固有の出力方法があります。lm オブジェクトはモデルの概要を表示し、ベクトルはベクトルの内容を一覧表示します。

特定のタイプのオブジェクトの内容を「表示」するための独自の方法を記述できるようにしたいと考えています。理想的には、これを既存のタイプのオブジェクトから分離できるようにしたいと考えています。

どうすればこれを行うことができますか?

4

1 に答える 1

31

開始するための例を次に示します。S3 メソッドがどのようにディスパッチされるかについての基本的な考え方を理解しmethods("print")たら、より興味深い印刷スタイルを実現する方法を確認するために、 によって返される印刷メソッドを調べてください。

## Define a print method that will be automatically dispatched when print()
## is called on an object of class "myMatrix"
print.myMatrix <- function(x) {
    n <- nrow(x)
    for(i in seq_len(n)) {
        cat(paste("This is row", i, "\t: " ))
        cat(x[i,], "\n")
        }
}

## Make a couple of example matrices
m <- mm <- matrix(1:16, ncol=4)

## Create an object of class "myMatrix". 
class(m) <- c("myMatrix", class(m))
## When typed at the command-line, the 'print' part of the read-eval-print loop
## will look at the object's class, and say "hey, I've got a method for you!"
m
# This is row 1   : 1 5 9 13 
# This is row 2   : 2 6 10 14 
# This is row 3   : 3 7 11 15 
# This is row 4   : 4 8 12 16 

## Alternatively, you can specify the print method yourself.
print.myMatrix(mm)
# This is row 1   : 1 5 9 13 
# This is row 2   : 2 6 10 14 
# This is row 3   : 3 7 11 15 
# This is row 4   : 4 8 12 16 
于 2012-06-07T19:26:58.447 に答える