2 つの列に基づいてデータ フレームを分割したいのですが、データ フレームのフラットなリストではなく、データ フレームの 2 次元行列を出力したいと考えています。私は自分が使いたいものを達成することができますが、パッケージ開発での使用by()
をsubset
避けるべきだと言われました (Ripley からだと思います) 。subset
ディムネームを保持するエレガントな代替手段 (おそらく を使用split
) はありますか?
# sample data
df <- data.frame(x=rnorm(20), y=rnorm(20), v1=rep(letters[1:5],each=4), v2=rep(LETTERS[6:9]))
# what I did previously
submat <- by(df, list(df$v1,df$v2), subset)
dim(submat) # 5 x 4
dimnames(submat) # "a" "b" "c" "d" "e" ; "F" "G" "H" "I"