[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

data$x1

but you can also do

data[["x1"]]

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

data[,"x1"]

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

data[[model.list[1]]]

or

data[,model.list[1]]

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.

floor(data[,model.list])

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