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

arun smartpink111 at yahoo.com
Wed May 1 20:26:07 CEST 2013

```Hi,
You could use:
library(plyr)
for(i in letters[24:26]) assign(i,mutate(get(i),V4=V2+V3))
x
# V1 V2 V3 V4
#1  1  2  3  5
#2  1  2  3  5
#3  1  2  2  4
#4  1  2  2  4
#5  1  1  1  2
y
#  V1 V2 V3 V4
#1  1  2  3  5
#2  1  2  3  5
#3  1  2  2  4
#4  1  2  2  4
#5  1  1  1  2

A.K.

>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

```