Хорошо, поэтому я запускаю некоторые циклы для обработки данных, хранящихся в объектах списка. Всегда помня о печально известном предостережении 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 - один такой), а затем один элемент списка (например, oof), который содержит мои данные. Приведенный выше код делает то же самое, что и eval(parse(text=paste(rab,'$','oof',sep=''))).
Я делаю все это специально, потому что я хочу использовать имена списков, а не [[x]] обозначение как механизм безопасности (потому что не все объекты списка имеют свое содержимое в том же порядке). Должен ли я придерживаться совета DWin в R: eval (parse (...)) часто субоптимально?