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
You can reference a column of an R data frame via the column name. If the data was loaded from a CSV file, the column name is the name given to that column in the first line (the header line) of the CSV file.
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)
Maybe you want this:
R> A <- data.frame(a=c(1,2,3), b=c(3,6,2))
R> colnames(A) <- paste("Names", 1:ncol(A), sep="")
R> A
Names1 Names2
1 1 3
2 2 6
3 3 2
R>
but as Tyler said in the comment, it is not entirely clear what you are asking.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With