On Apr 7, 2011, at 9:56 AM, Juan Carlos Borrás wrote:
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) }
Consider:
whiten <- scale # no need to re-invent the wheel
fc <- function(dfrm, coln) transform(dfrm, coln=whiten(dfrm[coln]))
colxy <- "x"
z <- fc(z, colxy) # the "[" function will interpret colxy
z
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@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.
David Winsemius, MD
West Hartford, CT
______________________________________________
R-help@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.