hi netters i have a vector NAMES containing a series of variable names: NAMES=c(x,r,z,m,st,qr,.....nn). i wanna fit a regression tree by using the code: my.tree<-tree(y~x+r+z+m+....nn,my.dataframe) but i don't want to type out "x+r+z+m+....+nn" one by one, as there are so many variables. besides, sometimes i wanna put the code in a function. so i need to have the argument "x+r+z+m+....+nn" generated from NAMES automatically. i've tried the code: paste(X,collpase="+") but it didn't work. could anybody give me a hint?
zhihua li wrote:> hi netters > > i have a vector NAMES containing a series of variable names: > NAMES=c(x,r,z,m,st,qr,.....nn). > i wanna fit a regression tree by using the code: > my.tree<-tree(y~x+r+z+m+....nn,my.dataframe) > > but i don't want to type out "x+r+z+m+....+nn" one by one, as there are > so many variables. besides, sometimes i wanna put the code in a > function. so i need to have the argument "x+r+z+m+....+nn" generated > from NAMES automatically. > > i've tried the code: paste(X,collpase="+") but it didn't work.You have to construct it as.formula() from these characters, or even better use short term formulas such as "y~.", if all variables should be used anyway. Uwe Ligges> could anybody give me a hint? > > > ------------------------------------------------------------------------ > > ______________________________________________ > 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
Adaikalavan Ramasamy
2005-Jul-12 10:52 UTC
[R] how to generate argument from a vector automatically
You can do it by subsetting the dataframe df <- data.frame( y=rbinom(100, 1, prob=0.5), x1=rnorm(100), x2=rnorm(100), x3=rnorm(100), z1=rnorm(100), z2=rnorm(100) ) names <- c("x1", "x2", "x3") tree( y ~ . , data = df[ , c("y", names) ] ) This solution is useless when you want to consider interactions between some terms etc. Another more flexible solution is from last example from help(formula) : xnam <- paste("x", 1:3, sep="") call <- as.formula(paste("y ~ ", paste(xnam, collapse= "+"))) tree( call, df ) Regards, Adai On Tue, 2005-07-12 at 09:53 +0000, zhihua li wrote:> hi netters > > i have a vector NAMES containing a series of variable names: > NAMES=c(x,r,z,m,st,qr,.....nn). > i wanna fit a regression tree by using the code: > my.tree<-tree(y~x+r+z+m+....nn,my.dataframe) > > but i don't want to type out "x+r+z+m+....+nn" one by one, as there are so > many variables. besides, sometimes i wanna put the code in a function. so i > need to have the argument "x+r+z+m+....+nn" generated from NAMES > automatically. > > i've tried the code: paste(X,collpase="+") but it didn't work. > > could anybody give me a hint? > > ______________________________________________ > 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