[R] help with expression()

Vitalie S. vitosmail at rambler.ru
Mon Aug 17 18:43:13 CEST 2009


On Mon, 17 Aug 2009 12:24:28 +0200, deanj2k <dl120 at le.ac.uk> wrote:

>
> Hello.
> I have a vector and within that vector is one expression.  When I display
> this vector it comes up as
>
> expression(NA_character_, NA_character_, "Null Effect", "Pooled effect",
>     NA_character_, NA_character_, NA_character_, NA_character_,
>     NA_character_, paste("Het Contours ", I^2, sep = ""), 0.4,
>     0.41, 0.42, 0.45, NA_character_)
>
> Where the part in bold is the element which is an expression.  How do I
> change this vector to a standard format what I can manipulate in the  
> usual
> way?

Dude, I have no idea what kind of analysis you are mastering, but that  
kind of output does not smell good. Inside the expression you have a  
nested expression, so you have to iterate over.
Here is a way to proceed:

> te <- expression(NA_character_, NA_character_, "Null Effect", "Pooled  
> effect",
     NA_character_, NA_character_, NA_character_, NA_character_,
     NA_character_, paste("Het Contours ", I^2, sep = ""), 0.4,
     0.41, 0.42, 0.45, NA_character_)

> I <- 3
> tl <- lapply(as.list(te), eval, envir=parent.frame())
> str(tl)
List of 15
  $ : chr NA
  $ : chr NA
  $ : chr "Null Effect"
  $ : chr "Pooled effect"
  $ : chr NA
  $ : chr NA
  $ : chr NA
  $ : chr NA
  $ : chr NA
  $ : chr "Het Contours 9"
  $ : num 0.4
  $ : num 0.41
  $ : num 0.42
  $ : num 0.45
  $ : chr NA
>

or if you want unevaluated paste expression just:


> as.list(te)
[[1]]
[1] NA

[[2]]
[1] NA

[[3]]
[1] "Null Effect"

[[4]]
[1] "Pooled effect"

[[5]]
[1] NA

[[6]]
[1] NA

[[7]]
[1] NA

[[8]]
[1] NA

[[9]]
[1] NA

[[10]]
paste("Het Contours ", I^2, sep = "")

[[11]]
[1] 0.4

[[12]]
[1] 0.41

[[13]]
[1] 0.42

[[14]]
[1] 0.45

[[15]]
[1] NA

>

Vitalie.
--




More information about the R-help mailing list