[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
>for my particular situation. For background, I have already received some
>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
More information about the R-help
mailing list