Rev 13181 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
#### eval / parse / deparse / substitute etc##- From: Peter Dalgaard BSA <p.dalgaard@biostat.ku.dk>##- Subject: Re: source() / eval() bug ??? (PR#96)##- Date: 20 Jan 1999 14:56:24 +0100e1 <- parse(text='c(F=(f <- .3), "Tail area" = 2 * if(f < 1) 30 else 90)')[[1]]e1str(eval(e1))mode(e1)( e2 <- quote(c(a=1,b=2)) )names(e2)[2] <- "a b c"e2parse(text=deparse(e2))##- From: Peter Dalgaard BSA <p.dalgaard@biostat.ku.dk>##- Date: 22 Jan 1999 11:47( e3 <- quote(c(F=1,"tail area"=pf(1,1,1))) )eval(e3)names(e3)names(e3)[2] <- "Variance ratio"e3eval(e3)##- From: Peter Dalgaard BSA <p.dalgaard@biostat.ku.dk>##- Date: 2 Sep 1999## The first failed in 0.65.0 :attach(list(x=1))evalq(dim(x) <- 1,pos.to.env(2))dput(get("x", env=pos.to.env(2)))e <- local({x <- 1;environment()})evalq(dim(x) <- 1,e)dput(get("x",env=e))### Substitute, Eval, Parse, etc## PR#3 : "..." matching## Revised March 7 2001 -pdA <- function(x, y, ...) {B <- function(a, b, ...) { match.call() }B(x+y, ...)}(aa <- A(1,2,3))all.equal(as.list(aa),list(as.name("B"), a = expression(x+y)[[1]], b = 3))(a2 <- A(1,2, named = 3)) #A(1,2, named = 3)all.equal(as.list(a2),list(as.name("B"), a = expression(x+y)[[1]], named = 3))CC <- function(...) match.call()DD <- function(...) CC(...)a3 <- DD(1,2,3)all.equal(as.list(a3),list(as.name("CC"), 1, 2, 3))## More dots issues: March 19 2001 -pd## Didn't work up to and including 1.2.2f <- function(...) {val <- match.call(expand.dots=F)$...x <- val[[1]]eval.parent(substitute(missing(x)))}g <- function(...) h(f(...))h <- function(...) list(...)k <- function(...) g(...)X <- k(a=)all.equal(X, list(TRUE))## Bug PR#24f <- function(x,...) substitute(list(x,...))deparse(f(a, b)) == "list(a, b)" &&deparse(f(b, a)) == "list(b, a)" &&deparse(f(x, y)) == "list(x, y)" &&deparse(f(y, x)) == "list(y, x)"tt <- function(x) { is.vector(x); deparse(substitute(x)) }a <- list(b=3); tt(a$b) == "a$b" # tends to break when ...## Parser:1 <22 <=34 >=33 >22 ==2## bug till ...1 !=3all(NULL == NULL)## PR #656 (related)u <- runif(1); length(find(".Random.seed")) == 1MyVaR <<- "val";length(find("MyVaR")) == 1rm(MyVaR); length(find("MyVaR")) == 0