7

我猜这已经存在于 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

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

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

4

1 回答 1

11

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非常有用。我经常使用它。

于 2013-03-25T22:05:11.537 回答