さて、リストオブジェクトに格納されているデータを処理するためにいくつかのループを実行しています。fortune
使用しないという悪名高い警告を常に念頭に置いてeval(parse(mystring))
、私はこれを思いついた:
Rgames> bar
$foo
$foo$fast
[1] 1 2 3 4 5
$foo$slow
[1] 6 7 8 9 10
$oof
$oof[[1]]
[1] 6 7 8 9 10
$oof[[2]]
[1] 1 2 3 4 5
Rgames> rab<-'bar'
Rgames> do.call('$',list(as.name(rab),'oof'))
[[1]]
[1] 6 7 8 9 10
[[2]]
[1] 1 2 3 4 5
通常、私はリスト(そのbar
うちの1つ)を選択してから、データを含むリストの1つの要素(たとえば oof
)を選択します。上記のコードは、と同じことを行いeval(parse(text=paste(rab,'$','oof',sep='')))
ます。安全メカニズムとして表記
ではなくリストの名前を使用したいので、これをすべて実行しています(すべてのリストオブジェクトの内容が同じ順序であるとは限らないため)。[[x]]
RのDWinからのアドバイスに固執する必要があります:eval(parse(...))はしばしば最適ではありませんか?