[R] the difference between "x1" and x1

Chad Reyhan Bhatti bhatticr at stat.rice.edu
Fri Apr 21 01:02:02 CEST 2006


I am not sure what to write in the subject line, but I would like to take
a character string that is a variable in a data frame and apply a function
that takes a numeric argument to this character string.

Here is a simplified example that would solve my problem.
Imagine I have my data stored in a data frame.
> x1 <- x2 <- x3 <- x4 <- x5 <- rnorm(20,0,1);
> data <- as.data.frame(cbind(x1,x2,x3,x4,x5));

I have a vector containing the variables of interest as such.
> model.list <- c("x1","x3","x4");

> model.list[1]
[1] "x1"

I would like to loop through this vector and apply the floor() function to
each variable.  In the current form the elements of model.list do not
represent the variables in the data frame.

> floor(model.list[1])
Error in floor(model.list[1]) : Non-numeric argument to mathematical

> floor(eval(model.list[1]))
Error in floor(eval(model.list[1])) : Non-numeric argument to mathematical

> s <- expression(paste("floor(",model.list[1],")",sep=""))
> s
expression(paste("floor(", model.list[1], ")", sep = ""))
> eval(s)
[1] "floor(x1)"

I have tried the obvious (to me) without success.  Perhaps someone could
suggest a
solution and some tidbits for me to read up on about the how and why.


Chad R. Bhatti

More information about the R-help mailing list