假设我有两个类似的data.frames
x1 <- data.frame(letters[1:26],1:26,1:26)
x2 <- data.frame(letters[1:26],1:26,1:26)
如何创建一个新数据框,将每个数据框的第二列和每个数据框的第三列一起添加。
这样x3 [2] = c(2,4,6,8,...)?
答案 0 :(得分:2)
你有这个想法吗?
x1[2]+x2[3]
答案 1 :(得分:1)
你想要:
> x3 <- data.frame(A = letters, S2 = x1[,2] + x2[,2], S3 = x1[,3] + x2[,3])
> head(x3)
A S2 S3
1 a 2 2
2 b 4 4
3 c 6 6
4 d 8 8
5 e 10 10
6 f 12 12
如果是这样,并且您想要更通用的解决方案,可以考虑mapply
:
> head(mapply(`+`, x1[,2:3], x2[2:3]))
X1.26 X1.26.1
[1,] 2 2
[2,] 4 4
[3,] 6 6
[4,] 8 8
[5,] 10 10
[6,] 12 12
使用它构建一个新数据框,第一列保持不变,我们有:
> x3 <- data.frame(letters, mapply(`+`, x1[,2:3], x2[2:3]))
> head(x3)
letters X1.26 X1.26.1
1 a 2 2
2 b 4 4
3 c 6 6
4 d 8 8
5 e 10 10
6 f 12 12