Rev 9145 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
R : Copyright 2000, The R Development Core TeamVersion 1.1.0 Under development (unstable) (May 10, 2000)R is free software and comes with ABSOLUTELY NO WARRANTY.You are welcome to redistribute it under certain conditions.Type "?license" or "?licence" for distribution details.R is a collaborative project with many contributors.Type "?contributors" for a list.Type "demo()" for some demos, "help()" for on-line help, or"help.start()" for a HTML browser interface to help.Type "q()" to quit R.> #### 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 +0100> e1 <- parse(text='c(F=(f <- .3), "Tail area" = 2 * if(f < 1) 30 else 90)')[[1]]> e1c(F = (f <- 0.3), "Tail area" = 2 * if (f < 1) 30 else 90)> str(eval(e1))Named num [1:2] 0.3 60- attr(*, "names")= chr [1:2] "F" "Tail area"> mode(e1)[1] "call">> ( e2 <- quote(c(a=1,b=2)) )c(a = 1, b = 2)> names(e2)[2] <- "a b c"> e2c("a b c" = 1, b = 2)> parse(text=deparse(e2))expression(c("a b c" = 1, b = 2))>> ##- 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))) )c(F = 1, "tail area" = pf(1, 1, 1))> eval(e3)F tail area1.0 0.5> names(e3)[1] "" "F" "tail area">> names(e3)[2] <- "Variance ratio"> e3c("Variance ratio" = 1, "tail area" = pf(1, 1, 1))> eval(e3)Variance ratio tail area1.0 0.5>>> ##- 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)))structure(1, .Dim = 1)>> e <- local({x <- 1;environment()})> evalq(dim(x) <- 1,e)> dput(get("x",env=e))structure(1, .Dim = 1)>> ### Substitute, Eval, Parse, etc>> ## PR#3 : "..." matching> A <- function(x, y, ...) {+ B <- function(a, b, ...) { match.call() }+ B(x+y, ...)+ }> (aa <- A(1,2,3))B(a = x + y, "..1" = 3)> all.equal(as.list(aa),+ list(as.name("B"), a = expression(x+y)[[1]], ..1 = 3))[1] TRUE> (a2 <- A(1,2, named = 3)) #A(1,2, named = 3)B(a = x + y, named = 3)> all.equal(as.list(a2),+ list(as.name("B"), a = expression(x+y)[[1]], named = 3))[1] TRUE>> CC <- function(...) match.call()> DD <- function(...) CC(...)> a3 <- DD(1,2,3)> all.equal(as.list(a3),+ list(as.name("CC"), ..1 = 1, ..2 = 2, ..3 = 3))[1] TRUE>>> ## Bug PR#24> f <- 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)"[1] TRUE>> ## Parser:> 1 <+ 2[1] TRUE> 2 <=+ 3[1] TRUE> 4 >=+ 3[1] TRUE> 3 >+ 2[1] TRUE> 2 ==+ 2[1] TRUE> ## bug till ...> 1 !=+ 3[1] TRUE>