通过分配在数据框 r 中创建新列

make new column in dataframe r by assign

我有一个数据框

A=data.frame(a=1:4,b=11:14)
> A
  a  b
1 1 11
2 2 12
3 3 13
4 4 14

并希望能够基于原始列生成新列,但也希望列名也基于它们。

我希望最终结果是

> data.frame(A,ab)
  a  b ab
1 1 11 11
2 2 12 24
3 3 13 39
4 4 14 56

我试过了

> assign(paste(colnames(A)[1],'someText',colnames(A)[2],sep=''),A$a*A$b)
> A
  a  b
1 1 11
2 2 12
3 3 13
4 4 14

无济于事。虽然分配有效

> asomeTextb
[1] 11 24 39 56

请注意,我有 56 列,并希望通过 i 和 j 使用循环和引用使列名指示我对列所做的操作。基本上:

for(i in 1:n){
    assign(paste(colnames(A)[i],'someText',colnames(A)[i-1],sep=''),A[,i]*A[,i-1])
}

尝试:

A=data.frame(a=1:4,b=11:14)
> A[[paste0(colnames(A)[1],colnames(A)[2])]] <- with(A,a*b)
> A
  a  b ab
1 1 11 11
2 2 12 24
3 3 13 39
4 4 14 56

...忘记您曾 听说过 函数 assign。就像,永远不要再使用它,甚至不要真的去想它。它对你来说已经死了。

如果将此应用于您绘制的 for 循环,请注意从 1 开始循环索引然后引用列 i-1 会导致问题。没有第 0 列。您可能想从 2 循环到 n

另一种方法dplyr

A=data.frame(a=1:4,b=11:14)

library(dplyr)

AB = A %>% mutate(ab = a*b)