使用R中的字符串名称分配data.frame的列

mma*_*123 14 string r assign

我正在尝试将数据分配给现有数据框,并在循环中生成名称.一个基本的例子可能是

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))
}
Run Code Online (Sandbox Code Playgroud)

现在我只需要弄清楚如何将name1和name2添加到data.frame A,同时保留其指定的名称.我确信有一个简单的答案,我现在就没有看到它.

最后我想结束

A
#a b name1 name2
#1 3 6      6
#2 6 3      3
#3 2 2      2
Run Code Online (Sandbox Code Playgroud)

但我需要以自动化的方式做到这一点.

例如,如果for循环可以适应

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
}
Run Code Online (Sandbox Code Playgroud)

但是这不保留列名

Bri*_*ggs 21

其他答案都很好,但是如果你像你一样使用循环,那么这将有效:

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)
}
Run Code Online (Sandbox Code Playgroud)

这使

> A
  a b Name1 Name2
1 1 3     6     6
2 2 6     3     3
3 3 2     2     2
Run Code Online (Sandbox Code Playgroud)

或者,paste("Name", i, sep="")可以替换为paste0("Name", i)