0

データ フレームに変換する必要がある R 行列がたくさんあります。このプロセスを自動化できることを願っています。

    x = matrix(rnorm(100), 10, 10)
    y = matrix(rnorm(100), 10, 10)
    z = matrix(rnorm(100), 10, 10)
    x = as.data.frame(x)
    y = as.data.frame(y)
    z = as.data.frame(z)

これは機能しません:

    lapply(c('x', 'y', 'z'), function(i) assign(i, as.data.frame(get(i))))
4

3 に答える 3

2

使用しないでくださいlapply()。リストを返すつもりはありません。

for (i in c('x', 'y', 'z')) assign(i, as.data.frame(get(i)))
于 2013-06-10T13:31:04.027 に答える
0

mapplyマトリックスで完全に使用できます。マトリックスは次元属性を持つベクトルであるためmapply、マトリックスで実行し (行数と列数の積である限り結果が得られます)、その後、結果を正しいサイズのマトリックスに戻します。

x = matrix(rnorm(16), 4)
y = matrix(rnorm(16), 4)
z = matrix(rnorm(16), 4)

matrix( mapply( sum , x , y , z ) , ncol = ncol(x) )
#          [,1]       [,2]       [,3]       [,4]
#[1,] -0.2707872 -1.3272743  0.4656883  0.1357950
#[2,]  0.7026622 -0.7754597 -1.1339546 -1.2705671
#[3,]  1.2174994  0.2062436 -0.8471821 -1.5186123
#[4,]  3.3559925  1.7008927  1.7765929  0.4737344

そして、指摘されているように、data.frames を使用するよりもはるかに高速です。で使用する予定の機能は何mapplyですか? これが機能しない何らかの理由がありますが、data.frames で機能しますか?

于 2013-06-10T13:30:59.243 に答える