假设我有一个矩阵
data<-matrix(seq(1,6),ncol=2,nrow=3,byrow=TRUE)
A B
[1,] 1 2
[2,] 3 4
[3,] 5 6从列'A‘开始,我想要创建一个向量,表示'A’中的每个数字和'A‘中的每一个其他数之间的两两差异。实际上:
c(1-1, 1-3, 1-5, 3-1, 3-3, 3-5, 5-1, 5-3, 5-5)然后我需要对第二列做同样的事情,以此类推。最后,我需要将这些向量绑定到一个新的差异矩阵中。
我觉得这应该适用于应用函数,或者可能是just (),但我就是不能把它放在一起。
谢谢你的帮助!
PS。如果答案涉及编写函数或for循环,请给我一个虚拟-中等水平的解释好吗?我是第一次学习编码,我仍然不能把我的头放在循环上,我仍然在为编写我自己的函数的逻辑而挣扎。
发布于 2018-02-11 15:47:29
如果我们需要对每一列上的每个成对元素进行减法,然后用apply循环遍历apply的列,得到成对的组合为带有expand.grid的两列data.frame,并使用Reduce减去列。
apply(data, 2, FUN = function(x) Reduce('-', expand.grid(rep(list(x), 2))))或者另一个选项是在遍历列之后使用outer。
apply(data, 2, FUN = function(x) outer(x, x, FUN = '-'))https://stackoverflow.com/questions/48733257
复制相似问题