S3 クラス "bar" のオブジェクトと print メソッドを定義します。
foo=list(1)
class(foo) <- c("bar")
print.bar <- function(x,...){
cat("print.bar says this was ",deparse(substitute(x)),"\n")
}
今 print(foo) はこれを行います:
> print(foo)
print.bar says this was foo
素晴らしいですが、自動印刷は失敗します:
> foo
print.bar says this was structure(list(1), class = "bar")
これは、行がトップレベルの式として評価される方法と関係があると思います。R-develをすばやく検索しても無駄でした。誰でもそれを修正する方法を知っていますか?
名前が必要な理由は、定義しているものが関数であり、印刷メソッドに「try foo(2)」を配置できるようにしたいからです (オブジェクトの名前から「foo」を取得します)。はい、S3 で関数をサブクラス化できます。他にもピフォールがいるかもしれないと思います..