2017-09-02 374 views
0

非常简单的问题,对于像我这样的新手来说非常困难。r误差中的算术运算:较长的对象长度不是较短的对象长度的倍数

x <- c(1,2,3,4) 

y <- c(1,2,3) 

对象长度不同。所以我不能表演,让我们说,z < - x + y

什么是最好的方法来处理不同物体长度的arithemetic。添加一个0?

+1

*您可以*实施z < - X + Y。较短的矢量元素将被回收。你会得到一个警告,而不是一个错误。参见'?算术'。问题是你为什么要这么做? –

回答

2

要做到这一点编程,你可以首先把矢量放在一个命名向量,我们可以运行一个分组功能。

z <- setNames(c(x, y), c(seq_along(x), seq_along(y))) 
# 1 2 3 4 1 2 3 
# 1 2 3 4 1 2 3 

现在我们可以为和运行分组功能:

unname(tapply(z, names(z), sum)) 
# [1] 2 4 6 4