リストのコレクションを扱っています。これには、次の事実以外に固定構造のない、深くネストされたリストが含まれています。
- レベル 1 のリストには、
variations
- 階層内のすべてのリーフ データは数値です。
例えば:
list(
list(variations = list(
'12' = list(x = c(a = 1))
)),
list(variations = list(
'3' = list(x = c(a = 6, b = 4)),
'abcd' = list(x = c(b = 1), m = list(n = list(o = c(p = 1023))))
))
)
リストのデータ構造をreshape
、フォームの融解した (per の) データフレームに変換する必要があります。
data.frame(
variation = c( '12', '3', '3', 'abcd', 'abcd'),
variable = c('x.a', 'x.a', 'x.b', 'x.b', 'm.n.o.p'),
value = c( 1, 6, 4, 1, 1023)
)
または、高速なグループ化とフィルタリングを実行できる別のデータ構造。
データ構造には何百万ものノードがあります。コレクションには数千のエントリを含めることができ、各エントリには数万のバリエーションがあり、名前が不明な 2 ~ 10 以上のリーフ ノードがあります。
コレクションからデータフレームをすばやく構築する方法についての提案を探しています。
1つのアプローチはunlist
、ソースデータで使用してリストを平坦化することですが、次のことについてはわかりません:
unlist
リーフ数値ノードを文字列に変換するデータ構造全体で実行する必要がありますか (これを解析して数値に戻す必要があります)、またはunlist
各バリエーションで使用する必要があります (数値リーフ ノードはそのまま残します)。あまり多くの中間値を生成せずに、値
unlist
を抽出するために作成される長い名前を解析する良い方法は何ですか?variation
variable
正しい方法であるかどうかに関係なくunlist
、私は疑問に思っています:
データフレームを行ごとに構築するのではなく、個別
variation
の 、variable
およびベクトルまたは行列を構築してから、それらをデータフレームに結合する方が良いですか?value
このタイプのデータを処理するために、データフレームを使用するのではなく、別のより高速なデータ構造を使用する必要がありますか? 最終的に使用するものはすべて、
plyr
、reshape
およびで使用するためにデータフレームに変換できる必要がありggplot
ます。