Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

as.alist.character?

Tags:

r

I wish to create a call object from a string. alist(), which does more or less what I want in interactive (manual input) mode, doesn't seem to have coercion methods, nor does as.call do what I would hope.

Consider the following code,

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)

Now, eval(parse) is frowned upon in my (infernal) circles; can you suggest better?

Thanks.

like image 650
baptiste Avatar asked Feb 19 '12 00:02

baptiste


1 Answers

I'm just copying my own dirty solution here from #142 which is pretty much equivalent to yours (and has the same issue about "infernal circles"):

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)

Let's see if there are other cleaner tricks.

like image 113
Yihui Xie Avatar answered Sep 17 '22 18:09

Yihui Xie