4

[[別の言い方をすれば:ネストされたリストで演算子を使用するにはどうすればよいですか?

これは、リストの深さレベルを決定する方法を尋ねたときの this oneのフォローアップの質問と考えることができます。両方とも再帰関数を提案した @Spacedman と @flodel からまともな回答を得ました。どちらのソリューションも非常に似ていて、私にとってはうまくいきました。

ただし、これらの関数から取得した情報をどうするかはまだわかりません。次のように、レベルでネストされたリストがあり、すべてのレベル要素iを含むリストを取得したいとします。i-th

myList$firstLevel$secondLevel$thirdLevel$fourthLevel
# fourthLevel contains 5 data.frames and thirdLevel has
# three elements

から 15 個すべての data.frames を取得するにはどうすればよいmylistですか? 私は例えば使用しようとしています

lapply(mylist,"[[",2)

しかし明らかに、最初のレベルですべてのリスト要素の 2 番目の要素を取得するだけです。

編集:私はextractそれぞれのヘルプで次のことを見つけました?"[["が、これまでのところ頭を包むことはできません: "[[ can be applied recursively to lists, so that if the single index i is a vector of length p, alist[[i]] is equivalent to alist[[i1]]...[[ip]] providing all but the final indexing results in a list."

編集: このようにループをネストしてしまいたくありません。

o <- list()
i=1
for (i in 1:2){
o[[i]] <- mylist[[c(i,1,1,1)]]
} 
4

1 に答える 1

0

そうこうしているうちに答えが見つかりました。自分でやったとは言えません。この リンクは、別の(複雑な)再帰関数を使用してネストされたリスト全体を線形化する方法を詳しく説明しています。

Akhil S. Behl によって提供されたソリューションの本当に優れている点は、data.frames もリストであり、再帰が data.frames の前で停止できるという事実を扱っていることです。これは以前の私の大きな問題の1つであることが判明しました。

于 2012-11-19T16:08:21.333 に答える