# [R] Adding Column to Data Frames Using a Loop

Sparks, John James jspark4 at uic.edu
Wed May 1 18:53:23 CEST 2013

```Dear R Helpers,

I am trying to do calculations on multiple data frames and do not want to
create a list of them to go through each one.  I know that lists have many
wonderful advantages, but I believe the better thing is to work df by df
wonderful help on how to handle some situations, such as removing columns:

x=as.data.frame(matrix(c(1,2,3,
1,2,3,
1,2,2,
1,2,2,
1,1,1),ncol=3,byrow=T))

y=as.data.frame(matrix(c(1,2,3,
1,2,3,
1,2,2,
1,2,2,
1,1,1),ncol=3,byrow=T))

z=as.data.frame(matrix(c(1,2,3,
1,2,3,
1,2,2,
1,2,2,
1,1,1),ncol=3,byrow=T))

for(i in letters[24:26] ) assign( i, subset(get(i), select=-c(V1))  )
x
y
z

And I figured how to do further processing using functions:

myfunc<-function(DF){
DF\$V4<-DF\$V2+DF\$V3
return(DF)
}
for(i in letters[24:26] ) assign( i, myfunc(get(i)))

But if I want to do a rather simple calculation and store it as a new
column in each data frame such as

x\$V4<-x\$V2+x\$V3
y\$V4<-y\$V2+y\$V3
z\$V4<-z\$V2+z\$V3

is there a simpler way to do this than building a function as shown above?
I tried a few variations of

i<-24
assign(paste(i,"\$V4",sep=""),paste(get(i),"\$V2+",get(i),"\$V3",sep=""))

but keep getting syntax errors.

If anyone could help with the syntax as to how to accomplish the
calculation above without building a function, I would really appreciate
it.

--John Sparks

```