从向量R中的每一个值减去向量R中的每一个值

从向量R中的每一个值减去向量R中的每一个值,r,function,for-loop,R,Function,For Loop,假设我有一个矩阵 data<-matrix(seq(1,6),ncol=2,nrow=3,byrow=TRUE) A B [1,] 1 2 [2,] 3 4 [3,] 5 6 然后我需要对第二列做同样的事情,依此类推。最后,我需要将这些向量绑定到一个新的差异矩阵中 我觉得使用apply函数或sweep()应该可以做到这一点,但我就是无法将其组合起来 谢谢你的帮助 如果答案涉及到写函数或for循环,你能给我一个虚拟的中级解释

假设我有一个矩阵

    data<-matrix(seq(1,6),ncol=2,nrow=3,byrow=TRUE)
          A  B
    [1,]  1  2
    [2,]  3  4
    [3,]  5  6
然后我需要对第二列做同样的事情,依此类推。最后,我需要将这些向量绑定到一个新的差异矩阵中

我觉得使用apply函数或sweep()应该可以做到这一点,但我就是无法将其组合起来

谢谢你的帮助


如果答案涉及到写函数或for循环,你能给我一个虚拟的中级解释吗?我是第一次学习编码,但我仍然无法理解循环,我仍然在为编写自己的函数的逻辑而挣扎。

如果我们需要对每列上的每个成对元素进行减法,然后使用
apply
矩阵的列进行循环,得到成对,组合为两列data.frame,使用
展开.grid
并使用
减少

apply(data, 2, FUN = function(x) Reduce('-', expand.grid(rep(list(x), 2))))

或者另一个选项是在循环通过列后使用
outer

apply(data, 2, FUN = function(x) outer(x, x, FUN = '-'))
apply(data, 2, FUN = function(x) outer(x, x, FUN = '-'))