2

270のテーブルを含むリストがあります。各テーブルには3列と22行があり、次のようになります。

                1         2         3
lx      -0.206628 -0.148405 -0.159344    
ly       0.017395  0.043114  0.027263    
lz      -0.044009  0.005597 -0.016906
...

これらの各テーブルを巨大な270x66マトリックスにマージする必要があります。ここで、行は各テーブルであり、列はテーブル列の値です。lapply、、、as.matrixを使ってみましたdata.matrix。トリックを行うこれらの組み合わせのようなものはありますか?または、最初にテーブルをベクトルに変換し、次にマトリックスに変換する必要がありますか?ループは一般的に推奨されていないことを私は知っています。

4

2 に答える 2

5

を使用してベクトルをunlist作成してから、新しいマトリックスを作成できます。

matrix(unlist(mylist), nrow = length(mylist), byrow = TRUE)

例:

mylist <- rep(list(matrix(1:9, 3)), 3)
matrix(unlist(mylist), nrow = length(mylist), byrow = TRUE)
# 
#       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
# [1,]    1    2    3    4    5    6    7    8    9
# [2,]    1    2    3    4    5    6    7    8    9
# [3,]    1    2    3    4    5    6    7    8    9
于 2012-12-11T06:14:51.327 に答える
2

これもうまくいくと思います:

#create a list like you discussed
LIST <- lapply(1:270,  function(i) matrix(1:66, ncol =3))

do.call(rbind, lapply(LIST, c))

これは、にになるように指示するlapply関数を実行することによって機能します。次に、それをすべて一緒に再帰的に使用します。cmatrixvectordo.callrbind

于 2012-12-11T07:21:06.680 に答える