私の質問のタイトルは、「ネストされた」部分を除いて、 dlply
(パッケージ) の説明とほぼ一致しています。plyr
例を挙げて説明しましょう:
library(plyr)
res <- dlply(mtcars, c("gear", "carb"), identity)
head(res, 2)
# $`3.1`
# mpg cyl disp hp drat wt qsec vs am gear carb
# Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
# Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
# Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
#
# $`3.2`
# mpg cyl disp hp drat wt qsec vs am gear carb
# Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
# Dodge Challenger 15.5 8 318 150 2.76 3.520 16.87 0 0 3 2
# AMC Javelin 15.2 8 304 150 3.15 3.435 17.30 0 0 3 2
# Pontiac Firebird 19.2 8 400 175 3.08 3.845 17.05 0 0 3 2
ご覧のとおり、出力は、名前 (キー) がデータの分割に使用した 2 つの変数の連結であるリストです。たとえば、"3.1"
は のキーです(gear = 3, carb = 1)
。
代わりに、分割変数ごとに 1 つずつ、2 セットのキーを介して要素にアクセスできるように、結果をネストされたリストにしたいと考えていますres[["3"][["1"]]
。
必ずしもplyr
パッケージからではなく、これを達成できる何かがありますか? 答えを任意の数の分割変数に一般化できるようにしたいと思います。また、私の例では関数を使用していましたが、任意の関数を適用できることが重要でありidentity
、結果としてデータが分割されただけです。ご提案いただきありがとうございます。