R 交叉生产具有独特的组合

  • 本文关键字:组合 r melt cross-product
  • 更新时间 :
  • 英文 :

可能

有一个版本的tcrossprod可以实现这一点,但我找不到它。从下面的示例中,如果顺序无关紧要,我如何只获得第一次出现组合的行?即 (1,2) 对我来说与 (2,1) 相同。

a <- c(1,2,3,4)
b <- c(10,5,4,10)
df<- data.frame(a,b)
melt(tcrossprod(df$b,1/df$b))
> melt(tcrossprod(df$b,1/df$b))
   Var1 Var2 value
1     1    1  1.00
2     2    1  0.50
3     3    1  0.40
4     4    1  1.00
5     1    2  2.00
6     2    2  1.00
7     3    2  0.80
8     4    2  2.00
9     1    3  2.50
10    2    3  1.25
11    3    3  1.00
12    4    3  2.50
13    1    4  1.00
14    2    4  0.50
15    3    4  0.40
16    4    4  1.00

有了m <- melt(tcrossprod(df$b,1/df$b)),你可以简单地做:

subset(m,X1>X2)
#   X1 X2 value
#2   2  1   0.5
#3   3  1   0.4
#4   4  1   1.0
#7   3  2   0.8
#8   4  2   2.0
#12  4  3   2.5

相关内容

  • 没有找到相关文章

最新更新