alex pegucci
2004-Mar-07 05:42 UTC
[R] Using character vectors to call data in the "cbind" command
Dear All, I have searched the forum but could not find a thread about the way to solve my problem. I am trying to find a way to use a subset of a list of variable names I have when I call the "cbind" command to create a data matrix, after I have attached a dataset. The nature of my program necessitates that I create different data matrices using a subset of variable names multiple times. So, when I change the variables for the analysis, I need to make 5-6 manipulations to my program and it is painful. Is there a way to use a character vector containing variable names in the cbind command? What I tried is 1.I loaded and attached a data set. 2.I have a character vector containing the variables I want to use in the analysis. Say name <- c("a1","a2","a3", "a4") I have several vectors of this type to use in the analysis, so to create a data matrix, I use the cbind command but as expected the following does not work: X <- cbind(1, name) cbind requires "," between the variable names so when I do X <- cbind(1, paste(",", name, collapse="")) it still doesn't work although the printed version of the second portion is more or less what I need. Is there a way to do this? Thanks for the help in advance. Alex --------------------------------- [[alternative HTML version deleted]]
Prof Brian Ripley
2004-Mar-07 08:23 UTC
[R] Using character vectors to call data in the "cbind" command
On Sat, 6 Mar 2004, alex pegucci wrote:> I have searched the forum but could not find a thread about the way to > solve my problem. I am trying to find a way to use a subset of a list of > variable names I have when I call the "cbind" command to create a data > matrix, after I have attached a dataset. The nature of my program > necessitates that I create different data matrices using a subset of > variable names multiple times. So, when I change the variables for the > analysis, I need to make 5-6 manipulations to my program and it is > painful. Is there a way to use a character vector containing variable > names in the cbind command? What I tried is> 1.I loaded and attached a data set. > 2.I have a character vector containing the variables I want to use in > the analysis. Say > name <- c("a1","a2","a3", "a4")> I have several vectors of this type to use in the analysis, so to > create a data matrix, I use the cbind command but as expected the > following does not work: > > X <- cbind(1, name) > cbind requires "," between the variable names so when I do > X <- cbind(1, paste(",", name, collapse="")) > it still doesn't work although the printed version of the second portion > is more or less what I need. > > Is there a way to do this?Several. Perhaps the easiest is eval(parse(text=paste("cbind(1,", paste(name, collapse=","), ")"))) which constructs the command you would type in and submits it. Another way would be to use do.call(), as in do.call("cbind", c(1, lapply(name, get))) although if you want dimnames tmp <- lapply(name, get); names(tmp) <- name do.call("cbind", c(1, tmp)) is needed. -- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
Apparently Analagous Threads
- cbind objects using character vectors
- applying cbind (or any function) across all components in a list
- How to cbind or rbind different lengths vectors/arrays without repeating the elements of the shorter vectors/arrays ?
- repeated measurements ANOVA
- cbind with vectors of different lengths?