Often I perform the same task on a series of variables in a dataframe, by 
looping through a character vector that holds the names and using paste(), 
eval(), and parse() inside the loop.

For instance:

thesevars<-names(environmental)
environmental$ToyOutcome<-rnorm(nrow(environmental))

tableOfResults<-data.frame(var=thesevars)
tableOfResults$Beta<- NA
rownames(tableOfResults)<-thesevars

for( thisvar in thesevars) {
        thiscommand<- paste("thislm <- lm( ToyOutcome ~ ", thisvar, ", 
data=environmental)")
        eval(parse(text=thiscommand))
        tableOfResults[thisvar, "Beta"] <- coef(thislm)[thisvar]
}

print(tableOfResults)

Note that it's not always as simple a task as in this example. Within the loop, 
I might first figure out whether the variable is continuous or categorical, 
then perform an operation depending on its type--maybe lm() for continuous but 
wilcox.test() for dichotomous.

But the use of paste(), eval(), and parse() seems awkward.  Is there a more 
elegant way to approach this?

Thanks

Jacob A. Wegelin
Department of Biostatistics
Virginia Commonwealth University
Richmond VA 23298-0032
U.S.A.

______________________________________________
R-help@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.

Reply via email to