4

この問題は、私が何とか自分で解けた簡単な問題から来ています。だからここに私の元の質問があります。

私のデータには多くのカテゴリがありますが、それらすべての係数を推定することに興味はありません。カテゴリに違いがないという仮説をテストしたいだけです。オブジェクトを呼び出すとsummary、レポートに必要のないほとんどの情報が生成されます。

set.seed(42)
dat <- data.frame(cat=factor(sample(1:10, 100, replace=T)), y=rnorm(100))
l1 <- lm(y~cat-1, data=dat)
summary(l1)

への呼び出しから最後の行だけを抽出するにはどうすればよいsummary(l1)ですか?

この特定のケースでは、anova関数を使用できます

anova(l1)

必要な情報だけを、summary(l1)生成されるものとは異なる形式で取得しました。

オブジェクトに関する何らかの要約があり、特定の部分だけを抽出したい場合はどうすればsummary(object)よいですか? たとえば、R電話の行だけを印刷するにはどうすればよいsummary(l1)ですか?

ps私は知っていsummary(l1)$fstatisticます。

4

2 に答える 2

4

を使っstrて探索してみてください。たとえば、

str(summary(l1))

その出力には次が含まれます

$ fstatistic   : Named num [1:3] 1.32 10 90

その後、試すことができます

summary(l1)$fstatistic

#   value     numdf     dendf 
#1.323275 10.000000 90.000000 

p値は少しトリッキーです。詳細については、この投稿を読んでください。ただし、ここに解決策があります。

anova(l1)$"Pr(>F)"[1]
# [1] 0.2303172

...きれいではありませんが、うまくいくようです!

于 2012-11-05T11:02:49.623 に答える
4

OK、文字通りの気分ですが、を使用capture.outputすると、評価されたオブジェクトの文字表現が返されます。たとえば、l1オブジェクトを使用すると、次のようになります。

l1Out <- capture.output(summary(l1))
grep("^F-st", l1Out, value = TRUE)
# [1] "F-statistic: 1.323 on 10 and 90 DF,  p-value: 0.2303 "

ただし、これは出力の最後の行ではないことに注意してください。

tail(l1Out, 1)
# [1] ""

また、集計オブジェクトの多くのコンポーネントについては、@seancarmody が書いたように、情報を抽出するためのより良い方法があります。

l1$call
# lm(formula = y ~ cat - 1, data = dat)
于 2012-11-05T11:17:36.033 に答える