[R] Loops, Paste, Apply? What is the best way to set up a list of many equations?

Rita Carreira ritacarreira at hotmail.com
Thu Jun 23 22:28:25 CEST 2011



Is there a way to apply paste to list(form1 = EQ1, form2 = EQ2, form3 = EQ3, form4 = EQ4) such that I don't have to write form1=EQ1 for all my models (I might have a list of 20 or more)? I also need the EQs to read the formulas associated with them.

For example, below, I was able to automate the name assignment but I could not figure out how to to set up the list using paste or other functions:
V2system<-c(formula(paste("form1","=","EQ1")), formula(paste("form2","=","EQ2")),                                 formula(paste("form3","=","EQ3")), formula(paste("form4","=","EQ4")))names(V2system)<-paste("form",1:4,sep="")

Any ideas?Thank you so much in advance for any help provided.
Rita

######## HERE'S MY SAMPLE PROGRAM ########
YX<-as.data.frame(matrix(rnorm(280),ncol=14, nrow=20))  ## generate variablesnames(YX) <-c(paste("Y", 1:4, sep=""),                  ## assign Y variables' names              paste("X", 1:10, sep=""))                 ## assign X variables' names
EQ1 <- Y1 ~ X1 + X2 + X4 + X7 + X10      ## equation 1 formulaEQ2 <- Y2 ~ X2 + X3 + X5 + X8 + X10      ## equation 2 formulaEQ3 <- Y3 ~ X5 + X6 + X7 + X9            ## equation 3 formulaEQ4 <- Y4 ~ X1 + X3 + X4 + X6 + X9       ## equation 4 formula
## VERSION 1 FOR SETTING UP THE LIST:V1system <-list(form1 = EQ1, form2 = EQ2, form3 = EQ3, form4 = EQ4)V1system
## VERSION 2 FOR SETTING UP THE LIST:V2system<-c(formula(paste("form1","=","EQ1")), formula(paste("form2","=","EQ2")),             formula(paste("form3","=","EQ3")), formula(paste("form4","=","EQ4")))names(V2system)<-paste("form",1:4,sep="")V2system


######## HERE ARE MY RESULTS ######## 
## RESULTS OF VERSIONS 1 AND 2 ARE EXACTLY THE SAME:
# $form1# Y1 ~ X1 + X2 + X4 + X7 + X10
# $form2# Y2 ~ X2 + X3 + X5 + X8 + X10
# $form3# Y3 ~ X5 + X6 + X7 + X9
# $form4# Y4 ~ X1 + X3 + X4 + X6 + X9
## STRUCTURE OF THE LISTS IS SAME FOR BOTH VERSIONS AS WELL:
# structure(list(form1 = quote(Y1 ~ X1 + X2 + X4 + X7 + X10), #               form2 = quote(Y2 ~ X2 + X3 + X5 + X8 + X10), #               form3 = quote(Y3 ~ X5 + X6 + X7 + X9), #               form4 = quote(Y4 ~ X1 + X3 + X4 + X6 + X9)), #          .Names = c("form1", "form2", "form3", "form4"))

Rita
=====================================
"If you think education is expensive, try ignorance."--Derek Bok
 		 	   		  


More information about the R-help mailing list