as.alist.character? - PullRequest
       12

as.alist.character?

9 голосов
/ 19 февраля 2012

Я хочу создать объект вызова из строки. alist(), который делает более или менее то, что я хочу в интерактивном (ручном вводе) режиме, похоже, не имеет методов принуждения, и as.call не делает то, что я надеюсь.

Рассмотрим следующий код,

string = "<<mychunk, cache=TRUE, fig.show=hold, dev=png, echo=c(1,3)>>="
sanitized = gsub("<<|>>=", "", string)
## as.call(sanitized)
## as.alist(sanitized)

as.alist.character <- function(x)
   eval(parse(text = paste("alist(", x, ")")))

as.alist.character(sanitized)

Теперь, eval(parse) осуждается в моих (адских) кругах; Вы можете предложить лучше?

Спасибо.

1 Ответ

2 голосов
/ 19 февраля 2012

Я просто копирую свое собственное грязное решение из # 142 , которое в значительной степени эквивалентно вашему (и имеет ту же проблему с "адскими кругами"):

x = 'label,a=1,b=asdf,c="qwer",d=FALSE,e=c(1,2,3)'
z = formals(eval(parse(text = sprintf('function(%s){}', x))))
str(z)

Давайте посмотрим, есть ли другие уловки чище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...