我想在R中将两个不同大小的数据帧相加。
> x = data.frame(a=c(1,2,3),b=c(5,6,7))
> y = data.frame(x=c(1,1,1))
> x
a b
1 1 5
2 2 6
3 3 7
> y
x
1 1
2 1
3 1
我想要的结果是,
>
a b
1 2 6
2 3 7
3 4 8
我该怎么做?
答案 0 :(得分:3)
我们可以使尺寸相同,然后得到总和
x + rep(y, ncol(x))
# a b
#1 2 6
#2 3 7
#3 4 8
或另一个选项是sweep
sweep(x, y$x, 1, `+`)
# a b
#1 2 6
#2 3 7
#3 4 8
答案 1 :(得分:3)
将y转换为unlist
的向量可能最简单,然后执行操作。在这里,unlist(y)
中的向量将在data.frame x。
x + unlist(y)
a b
1 2 6
2 3 7
3 4 8
作为旁注,data.frames是一种特殊类型的列表对象,有时在列表上执行操作可能会涉及更多。另一方面,只要维度排列(这里,只要向量与data.frame中的行数相同),它们就可以很好地处理向量。