R函数用于对两个向量进行所有成对比较

时间:2013-03-25 21:42:41

标签: r

我猜这已存在于R的某个地方,所以也许你可以指点我。

我有两个数字向量,A和B.

A <- c(1,2,3)
B <- c(2,3,4)

我正在寻找一个函数,它可以完成A和B之间的每个可能的比较,并返回这些比较的T / F矢量。

因此,在这种情况下,它将比较:1> 2然后1> 3然后1> 4然后2,2然后2> 3然后2> 4然后3> 2然后3> 4并返回:

FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE

如果它返回差异就好了,因为它可以很容易地转换。

这样的功能是否已经存在?

1 个答案:

答案 0 :(得分:10)

outer可能就是你想要的功能。但是,它返回一个矩阵,所以我们需要得到一个向量。这是许多人的一种方式:

 a <- 1:3
 b <- 2:4
 as.vector(outer(a,b,">"))
[1] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE

(这不是你指定的顺序;但是,它是一致的顺序)

此外:

 as.vector(t(outer(a,b,">")))
[1] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE

现在有差异:

> as.vector(outer(a,b,"-"))
[1] -1  0  1 -2 -1  0 -3 -2 -1

我发现outer非常有用。我经常使用它。