Skip to content
Prev 75381 / 398502 Next

Creating new columns inside a loop

On Thu, 11 Aug 2005, David L. Van Brunt, Ph.D. wrote:

            
A direct translation is

for(name in names(somedata)){
    somedata[[paste(name,"A",sep="")]]<-some.result(somedata[[name]])
    somedata[[paste(name,"B",sep="")]]<-some.other.result(somedata[[name]])
}

Possibly more efficient is

some.more.data <- lapply(somedata, some.result)
names(some.more.data)<-paste(names(somedata),"A",sep="")

yet.more.data <- lapply(somedata, some.other.result)
names(yet.more.data)<-paste(names(somedata),"B",sep="")

somedata<-cbind(somedata, some.more.data, yet.more.data)

 	-thomas
Thomas Lumley			Assoc. Professor, Biostatistics
tlumley at u.washington.edu	University of Washington, Seattle