2011-11-08 18 views
0

私はをANOVAテーブルのリストから抽出しました。Rでの体系的なリストの索引付け

tear <- c(6.5, 6.2, 5.8, 6.5, 6.5, 6.9, 7.2, 6.9, 6.1, 6.3, 
     6.7, 6.6, 7.2, 7.1, 6.8, 7.1, 7.0, 7.2, 7.5, 7.6) 
gloss <- c(9.5, 9.9, 9.6, 9.6, 9.2, 9.1, 10.0, 9.9, 9.5, 9.4, 
     9.1, 9.3, 8.3, 8.4, 8.5, 9.2, 8.8, 9.7, 10.1, 9.2) 
opacity <- c(4.4, 6.4, 3.0, 4.1, 0.8, 5.7, 2.0, 3.9, 1.9, 5.7, 
     2.8, 4.1, 3.8, 1.6, 3.4, 8.4, 5.2, 6.9, 2.7, 1.9) 
Y <- cbind(tear, gloss, opacity) 
rate <- factor(gl(2,10), labels=c("Low", "High")) 
additive <- factor(gl(2, 5, length=20), labels=c("Low", "High")) 

fit <- manova(Y ~ rate * additive) 
summary.aov(fit) 

私は、次のコードを使用してタスクを実行できます。もっとエレガントな方法でタスクを完了するために、この

summary.aov(fit)[[1:3]][-4,4] 

のような方法があるかどうか、私は疑問に思う

summary.aov(fit)[[1]][-4,4] 
summary.aov(fit)[[2]][-4,4] 
summary.aov(fit)[[3]][-4,4] 

を。ありがとう

答えて

4

sapplyを数値ベクトル、つまり1:3からなるリスト全体に使用します。

sapply(1:3, function(i) summary.aov(fit)[[i]][-4,4]) 
      [,1]  [,2]  [,3] 
[1,] 15.786848073 7.917808 0.1036289 
[2,] 6.897959184 3.729072 1.2076890 
[3,] 0.004535147 3.315068 0.9760335 

またリストであるsapplysummary.aov上で使用することにより、直接変数にアクセスすることができます。 F値が名前付き要素F valueある - インデックスにそれはあなたがバッククォートでそれをラップする必要がありますので、これは、スペースが含まれています:タスクのこのタイプの

sapply(summary.aov(fit), function(x) x$`F value`) 

     Response tear Response gloss Response opacity 
[1,] 15.786848073  7.917808   0.1036289 
[2,] 6.897959184  3.729072   1.2076890 
[3,] 0.004535147  3.315068   0.9760335 
[4,]    NA    NA    NA 
+0

直接F-値にアクセスする方法を説明するために、編集MYaseen208回答@:この知識を必要としない代替案として 。 – Andrie

+0

あなたの助けと素敵な答えに感謝します。 – MYaseen208

2

、機能の*apply家族はあなたの友達です:

sapply(summary.aov(fit), "[", -4, 4) 

それは(とその最初のパラメータは、あなたがサブセットしたいオブジェクトである - ?"["を参照してください)本当にRの[]を使用しての背後にある機能である「[」すぐに明らかではありませんが、他のパラメータが渡されますこの機能にも同様に適用されます。

sapply(summary.aov(fit), function(cursummary){cursummary[-4,4]}) 
+0

+1すばらしい答えをお寄せいただきありがとうございます。 – MYaseen208

関連する問題