データフレームと、2つのデータフレームのリストを返すdf
関数とがあります。dlplyを使用してid列を分割し、データフレームのリストのリストを返します。実際のデータとメソッドを概算するサンプルデータ/コードは次のとおりです。process
a
b
df
df <- data.frame(id1=rep(c(1,2,3,4), each=2))
process <- function(df) {
a <- data.frame(d1=rnorm(1), d2=rnorm(1))
b <- data.frame(id1=df$id1, a=rnorm(nrow(df)), b=runif(nrow(df)))
list(a=a, b=b)
}
require(plyr)
output <- dlply(df, .(id1), process)
output
はデータフレームのリストのリストであり、ネストされたリストには常にとという名前の2つのデータフレームがa
ありb
ます。この場合、外側のリストの長さは4です。
私が生成しようとしているのは、すべてのデータフレームと、それぞれの値を示す列を含むデータフレームです(これは属性としてリストに残っていると思いますa
。str (output)を参照してください)。次に、データフレームについても同様です。id
split_labels
b
これまでのところ、私はこの質問を部分的に使用して、このコードを考え出しました。
list <- unlist(output, recursive = FALSE)
list.a <- lapply(1:4, function(x) {
list[[(2*x)-1]]
})
all.a <- rbind.fill(list.a)
これで最終的なデータフレームが得られますa
(同様にb
、に別の添え字を付けるlist
場合)が、必要なid列がないため、より単純で洗練されたソリューションが必要になると確信しています。理想的にはを使用してきれいなものplyr
。