从向量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 = '-'))