1

私はRに比較的慣れておらず、解決するのが複雑な状況にあります。1000を超えるデータフレームのリストをRにアップロードし、このリストをxと呼びました。私がやりたいのは、特定のデータフレームを取得し、データフレーム全体(それぞれの最初の列を除く)の平均と分散を取得して、これらを2つの別々のベクトルに保存することです。たとえば、要素(3)から要素(54)まで、リスト内の3つおきのデータフレームの平均と分散を取得したいと思います。

したがって、最終的に必要なのは2つのベクトルです。

meanvector=c(mean(data frame(3)), mean(data frame(6)),..., mean(data frame(54)))
variancevector=c(var(data frame (3)), var(data frame (6)), ..., var(data frame(54)))

この問題は私の知識レベルをはるかに超えていますが、ある種のループを使用してこれを効果的に行うことができると思いますが、そのようなループを作成する方法がわかりません。どんな助けでも大歓迎です!前もって感謝します。

4

2 に答える 2

3

lapply次のようにインデックスを使用して渡すことができます。

ids <- seq(3, 54, by=3)
out <- do.call(rbind, lapply(ids, function(idx) {
    t <- unlist(x[[idx]][, -1])
    c(mean(t), var(t))
}))
于 2013-02-25T21:09:25.127 に答える
1

x が 1000 個のデータフレームのリストである場合、lapply を使用して、このリストのサブセットの平均と分散を返すことができます。

ix = seq(1, 1000, 3)
lapply(x[ix], function(df){
    #exclude the first column
    c(mean(df[,-1]), var(df[,-1]))
})
于 2013-02-25T20:58:39.347 に答える