R:如何获得2个向量的唯一成对组合

x = 1:3
y = 1:3
> expand.grid(x = 1:3, y = 1:3)
  x y
1 1 1
2 2 1
3 3 1
4 1 2
5 2 2
6 3 2
7 1 3
8 2 3
9 3 3

使用expand.grid给了我所有的组合。但是,我只想要成对比较,也就是说,我不想要 1 对 1、2 对、2 或 3 对 3 的比较。此外,我只想保留唯一的对,即我想保留1 对 2(而不是 2 对 1)。

总之,对于上述xy,我想要以下 3 对组合:

  x y
1 1 2
2 1 3
3 2 3

同样,对于x = y = 1:4,我想要以下成对组合:

  x y
1 1 2
2 1 3
3 1 4
4 2 3
5 2 4
6 3 4

回答

我们可以用 combn

f1 <- function(x) setNames(as.data.frame(t(combn(x, 2))), c("x", "y"))
f1(1:3)
#   x y
#1 1 2
#2 1 3
#3 2 3

f1(1:4)
#  x y
#1 1 2
#2 1 3
#3 1 4
#4 2 3
#5 2 4
#6 3 4


以上是R:如何获得2个向量的唯一成对组合的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>