デフォルトの出力要素を定義し、残りの要素を非表示にするオプションがあるかどうか、R の S3 クラスについて疑問に思いました。例として、次のように、特定のものを計算して S3 クラスとして報告するおもちゃの関数があるとします。
toy <- function(x){
resA <- mean(x)
resB <- length(x)
output <- list(resA=resA, resB=resB, x=x)
class(output) <- "toy"
output
}
今すぐ結果にアクセスすると
res <- toy(c(1:10))
res
予想どおり、リスト全体を出力として取得します。しかし、S3 印刷メソッドも定義すると
`print.toy` <- function(x){
print(x$resA)
}
resB
不要な情報 (この場合はとx
) を隠し、ユーザーには のみが表示される print の標準出力を提供できますresA
。toy
ただし、 classのオブジェクトにさらに計算を適用する場合、これは混乱を招く可能性があります。
res <- toy(c(1:10))
res
# Produces an error
res + 1
# Accesses the correct variable of class toy:
res$resA + 1
私の質問は、呼び出しが同様に機能するresA
ように、変数が指定されていない場合に取られるべき S3 クラスの標準値になるようにリスト項目を定義する方法はありますか?res + 1
これを読んでくれてありがとう。