首页 > 解决方案 > 向量的元素减法?

问题描述

我在 R 中有以下向量

x<-c(5,7,8,20,11,30)

我想得到所有可能的减法xi-xj1<=i<j<=6。我使用outer了函数,但我得到了一个对角线为零的矩阵。我不想xi-xj拥有i=j。另外,我想要一个向量,而不是矩阵。

标签: r

解决方案


outer您可以对usinglower.tri或的输出进行子集化upper.tri

y <- outer(x, x, '-')
y[lower.tri(y)]
# [1]  2  3 15  6 25  1 13  4 23 12  3 22 -9 10 19

seq或者,您可以使用和生成索引rep

k <- seq(length(x) - 1, 1)
i <- rep(seq_along(k), k)
j <- sequence(k) + i
x[j] - x[i]
# [1]  2  3 15  6 25  1 13  4 23 12  3 22 -9 10 19

推荐阅读