2012-02-24 8 views
0

Rでは、私は多次元リストを持っています。私は次のような要素にアクセスできます:多次元リストでワイルドカードを選択しますか?

results[["A1"]][["B2"]][["C1"]] 

もちろん、上記の文の出力もリストです。

私は何をしたいのですがのようなものです:私の所望の出力は、(各値のリストを連結したものである一つの大きなリスト、だろう

results[["A1"]][[*]][["C1"]] 

または

results[["A1"]][[,]][["C1"]] 

例えば、「B1」、「B2」、...)を第2の次元に含む。

これは可能でしょうか?

for (i in 1:length(results[["A1"]])){ 
    output = c(output, results[["A1"]][[i]][["C1"]] 
} 

しかし、私は何かクリーナーがあるのだろうかと思っていましたか?私はそれをすべて間違っているのですか?

+0

私の前にサンプルデータがないので、あなたが何をやっているのか終わっているのかは分かりませんが、 'lapply'と' unlist'を 'recursive = FALSEである。それら2つは、あなたが探しているものを手に入れなければなりません。 – Justin

+0

do.call( "rbind"、list)を使ってデータフレームに変換してからグループをサブセット化する方がはるかに簡単です。 – jdennison

+0

@ジャスティン:はい、これは私のために働いた。ありがとう!私は 'unlist(lapply(results [[A1]])、FUN = function(x){x [[C1"]]}、再帰= F) ' – stepthom

答えて

1

これは機能しますか? 1は、ネストされた関数呼び出しを行う必要があるとして、内部からの読み出し

sapply(sapply(sapply(results[["A1"]], "[[", TRUE), "[[", "C1"), "[[", "D") 

、すべての:特定のインデックス名「D」の第4階層に一般化したばかりだろう

sapply(sapply(results[["A1]], "[[", TRUE), "[[", "C1"") 

results$A1値のサブリストが収集され、 "C1"名前を持つものだけのリストを構成するために処理され、その後、その縮小リストがさらに抽出されて、results$A1$all-wildcards$C1$Dという形式の値が得られます。 "[["関数がその引数を評価するという事実を考えれば、適切なインデックス作成レベルで有効なリスト名だったら、複数の値を持つ引用されていないオブジェクトを提供することができます。

+0

のようなものを使ってしまいました。私の実際のデータセットでは、ワイルドカードの次元の後に実際に[["C1"] [["D1"]]の2つの次元があります。構文はどのように見えるでしょうか? – stepthom