<分区>
我在 R 中有以下向量
x<-c(5,7,8,20,11,30)
我想得到所有可能的减法xi-xj
, 1<=i<j<=6
.我用了outer
函数,但我得到了一个对角线为零的矩阵。我不想拥有 xi-xj
与 i=j
.另外,我想要一个向量,而不是矩阵。
标签 r
<分区>
我在 R 中有以下向量
x<-c(5,7,8,20,11,30)
我想得到所有可能的减法xi-xj
, 1<=i<j<=6
.我用了outer
函数,但我得到了一个对角线为零的矩阵。我不想拥有 xi-xj
与 i=j
.另外,我想要一个向量,而不是矩阵。
最佳答案
您可以使用 lower.tri
或 upper.tri
对 outer
的输出进行子集化。
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
关于r - 向量的元素减法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63558868/