通过分配在数据框 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)
我有一个数据框
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)