@Imoが推測しているように、summary.eRm
は、オブジェクトを返すのではなく、コンソールに出力するだけです。 getAnywhere(summary.eRm)
を実行すると、summary.eRm
のコードを調べることができます。 summary
は「汎用」関数です。つまり、関数が呼び出されたときに呼び出される「メソッド」に依存します。
lm
モデルオブジェクトの場合、summary(my_model)
と入力すると、summary.lm
関数が送出されます。しかし、summary(my_model)
と入力し、がeRm
オブジェクトの場合は、summary.eRm
メソッドが送出されます。 summary.lm
はオブジェクトを返しますが、summary.eRm
はコンソールに出力します。 methods(summary)
を実行して、さまざまなタイプのオブジェクトに対してディスパッチされるさまざまなサマリー関数を確認します。
回避策は、モデルオブジェクト自体を使用して独自のサマリーオブジェクト(またはそのようなオブジェクトを作成する関数)を作成することです。 str(my_model)
を使用してモデルオブジェクトのコンポーネントを検査することができます。また、summary.eRm
のコードを見て、コンソールに印刷する各コンポーネントをどこに取得しているかを確認することもできます。ここで
は要約関数を作成するsummary.eRm
からコードを持ち上げ、簡単な例です:
RMsmry = function(obj) {
cols = c("Estimate", "Std. Error", "lower CI", "upper CI")
# Create difficulty summary
ci = confint(obj, "eta")
tbl1 = as.data.frame(cbind(round(obj$etapar, 3),
round(obj$se.eta, 3), round(ci, 3)))
names(tbl1) = cols
# Create easiness summary
ci <- confint(obj, "beta")
tbl2 = as.data.frame(cbind(round(obj$betapar, 3),
round(obj$se.beta, 3), round(ci, 3)))
names(tbl2) = cols
return(list(Difficulty=tbl1, Easiness=tbl2))
}
my_summary = RMsmry(my_model)
my_summary
$Difficulty
Estimate Std. Error lower CI upper CI
I2 -1.191 0.658 -2.480 0.098
I3 -1.191 0.658 -2.480 0.098
I4 0.078 0.627 -1.150 1.306
I5 -0.750 0.623 -1.971 0.471
I6 0.078 0.627 -1.150 1.306
I7 1.079 0.748 -0.386 2.544
I8 -0.339 0.614 -1.543 0.865
I9 0.078 0.627 -1.150 1.306
I10 1.079 0.748 -0.386 2.544
$Easiness
Estimate Std. Error lower CI upper CI
beta I1 -1.079 0.748 -2.544 0.386
beta I2 1.191 0.658 -0.098 2.480
beta I3 1.191 0.658 -0.098 2.480
beta I4 -0.078 0.627 -1.306 1.150
beta I5 0.750 0.623 -0.471 1.971
beta I6 -0.078 0.627 -1.306 1.150
beta I7 -1.079 0.748 -2.544 0.386
beta I8 0.339 0.614 -0.865 1.543
beta I9 -0.078 0.627 -1.306 1.150
beta I10 -1.079 0.748 -2.544 0.386
おそらく '要約(my_model)の結果は、'これができない、単にprint文であります救われる。 'RM(X = my_data)'がRM型のオブジェクトを生成するならば、 'summary.RM'のコードを見るかもしれません。 – lmo