lm(height ~ ., data=X) works fine. However nnn <- "height" ; lm(nnn ~ . ,data=X) fails How do I write such a formula, which depends on the value of a string variable like nnn above? A typical application might be a program that takes a data frame containing only numerical data, and figures out which of the columns can be best predicted from all the other columns. Thanks David
This being R, there are likely other ways, but I use: lm(as.formula(paste(nnn, "~ .")),data=X) Sarah On Sun, Oct 13, 2013 at 5:04 PM, David Epstein <David.Epstein at warwick.ac.uk> wrote:> lm(height ~ ., data=X) > works fine. > > However > nnn <- "height" ; lm(nnn ~ . ,data=X) > fails > > How do I write such a formula, which depends on the value of a string variable like nnn above? > > A typical application might be a program that takes a data frame containing only numerical data, and figures out which of the columns can be best predicted from all the other columns. > > Thanks > David >-- Sarah Goslee http://www.functionaldiversity.org
Hi, May be: set.seed(24) ?X <- data.frame(weight=sample(100:250,20,replace=TRUE),height=sample(140:190,20,replace=TRUE)) Others <- colnames(X)[!colnames(X)%in%"height"] ?nnn <- "height" res <- lm(formula(paste(nnn,"~",paste(Others, sep="+"))),data=X) ?res1<- lm(height~.,data=X) #or res2<- lm(get(nnn)~get(Others),data=X) #needs some renaming of rownames ?identical(coef(summary(res)),coef(summary(res1))) #[1] TRUE A.K. On Sunday, October 13, 2013 5:06 PM, David Epstein <David.Epstein at warwick.ac.uk> wrote: lm(height ~ ., data=X) works fine. However nnn <- "height" ;? lm(nnn ~ . ,data=X) fails How do I write such a formula, which depends on the value of a string variable like nnn above? A typical application might be a program that takes a data frame containing only numerical data, and figures out which of the columns can be best predicted from all the other columns. Thanks David ______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
On 2013-10-14 10:04, David Epstein wrote:> lm(height ~ ., data=X) > works fine. > > However > nnn <- "height" ; lm(nnn ~ . ,data=X) > fails > > How do I write such a formula, which depends on the value of a string > variable like nnn above?as.formula() with paste() could work, but from where you are now, try lm(get(nnn) ~ . ,data=X) HTH> > A typical application might be a program that takes a data frame > containing only numerical data, and figures out which of the columns > can be best predicted from all the other columns. > > Thanks > David > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.