[R] transform() on selective names. Is it possible?

From: Juan Carlos Borrás <jcborras_at_gmail.com>
Date: Thu, 07 Apr 2011 16:56:16 +0300


Hi all,
I am whitening my data:

# code begins

N <- 300
M <- 2
x <- matrix(data=rnorm(N*M, 0, 3)-10, ncol=M, nrow=N)
y <- matrix(c(1,-2,-2,1), ncol=M, nrow=M)
z <- data.frame(x %*% y)

colnames(z) <- c('x','y')
par(mfrow=c(1,3))

plot(z, pch=5, col="blue")

whiten <- function(x) { (x-mean(x))/sd(x) }

zz <- transform(z, x=whiten(x), y=whiten(y)) plot(zz, pch=3, col="red")

#code ends

And everything looks fine enough.
But now I want to withen just one of the columns and I won't know which one until my script is running, hence I can't hard code it in the script.
Then I though, well maybe if I define some convenient f...

#begin code

f <- function(a) { paste(a,"=withen(",a,")", sep='') } a <- 'x' # or a <- 'y' depending on user input..... f(a)
> [1] "x=withen(x)"

# so I could try....
zzz <- transform(z, eval(f('x')))
# which of course doesn't work
plot(zz, pch=3, col="green")

head(z, n=2)
> x y
>1 17.167380 6.884402
>2 8.234507 13.940932

head(zzz, n=2)
> x y
>1 17.167380 6.884402
>2 8.234507 13.940932

#end code

Could someone provide me with some hint on whether the attempted trick above is possible and how to proceed further? Thanks in advance.
jcb!



R-help_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. Received on Thu 07 Apr 2011 - 13:58:30 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 07 Apr 2011 - 14:20:28 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive