4

10 個の巨大なリスト (各リストには 7 つの要素がありますが、要素は巨大です) があり、これらのリストの要素ごとの平均を計算する必要があります。したがって、A1、A2、A3、...、A10 リストがある場合。計算する必要があります:

mean1 = mean(A1[[1]], A2[[1]], A3[[1]], ...,A10[[1]])
.
.
.
mean7 = mean(A1[[7]], A2[[7]], A3[[7]], ....A10[[7]])

for ループで実行しましたが、R が提供するより良い解決策があるかどうかを知りたいと思っていました。よろしくお願いします。

4

2 に答える 2

7

A[[·]]次のリストのようなベクトルの場合、

> ( List <- list(A=1:4, B=5:8, C=9:12) )
$A
[1] 1 2 3 4

$B
[1] 5 6 7 8

$C
[1]  9 10 11 12

次に、このアプローチを使用して平均を取得できます。

> rowMeans(simplify2array(List))
[1] 5 6 7 8

rowMeans(as.data.frame(List))同じ結果が得られます。

于 2013-07-23T16:26:04.290 に答える
3

As がベクトルのリストであると仮定します。

Anames <- paste0("A", 1:10)

# for completeness
for(A in Anames)
    assign(A, lapply(1:7, function(x) rnorm(1000)))

sapply(1:7, function(i)
{
    m <- sapply(Anames, function(A) get(A)[[i]])
    mean(m)
})

これにより、メモリ内にすべての のコピーを作成するAのではなく、一度に 1 つずつ取得して目的のベクトルを抽出します。しかし、そのすべてのデータを格納するのに十分なメモリがあれば、おそらくコピーも格納できます。

于 2013-07-23T16:39:27.143 に答える