向量值比较:1个元素与所有其他元素 [英] Comparing Vectors Values: 1 element with all other

查看:85
本文介绍了向量值比较:1个元素与所有其他元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道如何比较一个向量中的一个元素和另一个向量中的所有元素。例如:

I'm wondering how I can compare 1 element of a vector with all elements in the other vector. As an example: suppose

x <- c(1:10)  
y <- c(10,11,12,13,14,1,7) 

现在我可以对元素进行比较了

Now I can compare the elements parewise

x == y
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

但是我想将y的所有元素与x的特定元素进行比较,例如

But I want to compare all elements of y with a specific element of x, something like

x[7] == y
[1] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

这可能吗?

推荐答案

像这样吗?

x <- 1:10
y <- c(10,7,11,12,13,14,15,16,17,18)
res <- outer(x, y, `==`)
colnames(res) <- paste0("y=", y)
rownames(res) <- paste0("x=", x)

这将为您提供以下矩阵:

Which gives you the following matrix:

      y=10   y=7  y=11  y=12  y=13  y=14  y=15  y=16  y=17  y=18
x=1  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x=2  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x=3  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x=4  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x=5  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x=6  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x=7  FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x=8  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x=9  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x=10  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

如果您希望将暗号命名为 y [1] 使用

If you want the dimnames to be as y[1] use

colnames(res) <- paste0("y[", seq_along(y), "]")
rownames(res) <- paste0("x[", seq_along(x), "]")

这将为您提供:

       y[1]  y[2]  y[3]  y[4]  y[5]  y[6]  y[7]  y[8]  y[9] y[10]
x[1]  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x[2]  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x[3]  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x[4]  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x[5]  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x[6]  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x[7]  FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x[8]  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x[9]  FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x[10]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

要获取索引,请使用哪个,如下所示:

To get the index use which as follows:

which(res) 
[1] 10 17

由于 R 按行保存矩阵结果为10和17。
如果要使用x和y分量的索引,请使用:

As R saves matrices rowwise this results in 10 and 17. If you want the index in x and y component use:

which(res, arr.ind = TRUE)
     row col
x=10  10   1
x=7    7   2

这篇关于向量值比较:1个元素与所有其他元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆