[R] the difference between "x1" and x1

Duncan Murdoch murdoch at stats.uwo.ca
Fri Apr 21 01:37:53 CEST 2006

On 4/20/2006 7:02 PM, Chad Reyhan Bhatti wrote:
> Hello,
> 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.

Remember that dataframes are lists with named members.  So to apply 
something to the x1 member of a dataframe, you can do the usual


but you can also do


In addition, dataframes implement the same style of index handling as 
matrices, so you can refer to the x1 column as


You could replace "x1" with any expression (e.g. model.list[1]) in 
either of the latter two examples, e.g.




You say below that you want to loop through the vector; in fact, there's 
no need to do that.  The floor function would work fine on the whole 
thing at once, e.g.


Duncan Murdoch
> 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
> function
>> floor(eval(model.list[1]))
> Error in floor(eval(model.list[1])) : Non-numeric argument to mathematical
> function
>> 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.
> Thanks,
> Chad R. Bhatti
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

More information about the R-help mailing list