I am trying to assign data to an existing dataframe with a name generated in a loop. A basic example might be
A = data.frame(a = c(1,2,3), b=c(3,6,2))
for (i in 1:2){
name = paste("Name",i, sep="")
assign(name, c(6,3,2))
}
Now I just need to figure out how to add name1 and name2 to the data.frame A, while keeping their assigned name. I'm sure there is an easy answer, I'm just not seeing it right now.
in the end I would like to end up with
A
#a b name1 name2
#1 3 6 6
#2 6 3 3
#3 2 2 2
But I need to do this in an automated fashion.
For instance if the for loop could be adapted to be like
for (i in 1:2){
name = paste("Name",i, sep="")
assign(name, c(6,3,2)
A= cbind(A, get(paste(name,i,sep=""))) # works but doesn't maintain the column name as name1 or name2 etc
}
this however doesn't maintain column names
The other answers are good, but if you are set on using a loop like you have, then this would work:
A <- data.frame(a = c(1,2,3), b = c(3,6,2))
for (i in 1:2){
A[paste("Name", i, sep="")] <- c(6,3,2)
}
which gives
> A
a b Name1 Name2
1 1 3 6 6
2 2 6 3 3
3 3 2 2 2
Alternatively, paste("Name", i, sep="")
could be replaced with paste0("Name", i)