mydf
27 人の被験者からのデータを含むdata.frame があります。congruent
(2 レベル) と(5 レベル) の 2つの予測子がoffset
あるため、全体で 10 の条件があります。27 人の各被験者が各条件で 20 回テストされ、合計 10*27*20 = 5400 の観測値が得られました。RT
は応答変数です。構造は次のようになります。
> str(mydf)
'data.frame': 5400 obs. of 4 variables:
$ subject : Factor w/ 27 levels "1","2","3","5",..: 1 1 1 1 1 1 1 1 1 1 ...
$ congruent: logi TRUE FALSE FALSE TRUE FALSE TRUE ...
$ offset : Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 5 5 1 2 5 5 2 2 3 5 ...
$ RT : int 330 343 457 436 302 311 595 330 338 374 ...
私は、10 の条件のそれぞれで各被験者daply()
の RT を計算するために使用しました。mean
myarray <- daply(mydf, .(subject, congruent, offset), summarize, mean = mean(RT))
結果は、私が望んでいた通りに見えます。つまり、3D 配列です。いわば 5 つの表 (条件ごとに 1 つ) で、条件に対するoffset
各被験者の平均を示します。congruent=FALSE
congruent=TRUE
ただし、 の構造を確認するとmyarray
、紛らわしい出力が得られます。
List of 270
$ : num 417
$ : num 393
$ : num 364
$ : num 399
$ : num 374
...
# and so on
...
[list output truncated]
- attr(*, "dim")= int [1:3] 27 2 5
- attr(*, "dimnames")=List of 3
..$ subject : chr [1:27] "1" "2" "3" "5" ...
..$ congruent: chr [1:2] "FALSE" "TRUE"
..$ offset : chr [1:5] "1" "2" "3" "4" ...
これは、非常によく似た形式 (3 次元、数値のみ) ですがozone
、パッケージのプロトタイプ配列の構造とはまったく異なって見えます。plyr
を使用して、この配列に関するさらに要約した情報を計算したいと思いaaply
ます。正確には、各被験者とオフセットの合同平均と不一致平均の差を計算したいと思います。
aaply()
ただし、すでにlike の最も基本的なアプリケーションはaaply(myarray,2,mean)
意味のない出力を返します。
FALSE TRUE
NA NA
Warning messages:
1: In mean.default(piece, ...) :
argument is not numeric or logical: returning NA
2: In mean.default(piece, ...) :
argument is not numeric or logical: returning NA
daply()
関数がそのような奇妙に構造化された出力を返す理由がわかりませんaaply
。plyr
率直に言って、パッケージの経験がほとんどないことを認めます。