3

データフレームを 3 次元の配列に変換する必要があります。データフレームのすべての列は数値です。これを達成するためのエレガントで効率的な方法は何ですか?

例:

x <- 1:3
y <- 1:3

g <- t(vapply(x, function(x){ 
      vapply(y, function(y){ 
          as.numeric(paste(x,y,sep="."))}, numeric(1))}, numeric(3)))

gdf <- data.frame( cbind(rep(1:3,each=3), rbind(g, g*2, g*3)) )

「gdf」を、gdf$x1 が 3 番目の次元を定義する配列に変換したいと考えています。結果は次のようになります。

ga <- array( c(g, g*2, g*3), dim=c(3,3,3) )

ありがとう!

4

2 に答える 2

2

これはあなたの例でうまくいきます。あなたにとって十分に一般的であることを願っています:

gb <- aperm(array(unlist(gdf[, -1]), c(3, 3, 3)), c(1, 3, 2))

identical(ga, gb)
# [1] TRUE
于 2013-09-15T20:29:28.580 に答える
2

また、パッケージ abind を使用してこの方法を見つけました。

abind( split(gdf, gdf$X1), along=3)
于 2013-09-16T22:44:05.740 に答える