[R] the difference between "x1" and x1
murdoch at stats.uwo.ca
Fri Apr 21 01:37:53 CEST 2006
On 4/20/2006 7:02 PM, Chad Reyhan Bhatti wrote:
> 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) 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.
> 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");
>  "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.
> Error in floor(model.list) : Non-numeric argument to mathematical
> Error in floor(eval(model.list)) : Non-numeric argument to mathematical
>> s <- expression(paste("floor(",model.list,")",sep=""))
> expression(paste("floor(", model.list, ")", sep = ""))
>  "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
> R-help at stat.math.ethz.ch mailing list
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
More information about the R-help