是否有 R 函数用于查找向量中元素的索引?
在 R 中,我有一个元素 x
和一个向量 v
。我想找到 v
中等于 x
的元素的第一个索引。我知道执行此操作的一种方法是:which(x == v)[[1]]
,但这似乎效率很低。有没有更直接的方法来做到这一点?
对于奖励积分,如果 x
是向量,是否有一个函数可以工作?也就是说,它应该返回一个索引向量,指示 x
的每个元素在 v
中的位置。
In R, I have an element x
and a vector v
. I want to find the first index of an element in v
that is equal to x
. I know that one way to do this is: which(x == v)[[1]]
, but that seems excessively inefficient. Is there a more direct way to do it?
For bonus points, is there a function that works if x
is a vector? That is, it should return a vector of indices indicating the position of each element of x
in v
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
函数
match
适用于向量:match
仅根据您的要求返回匹配的第一次遇到。它返回第一个参数中的值在第二个参数中的位置。对于多重匹配,
%in%
是正确的方法:%in%
返回一个逻辑向量,只要第一个参数为TRUE
如果可以在第二个参数中找到该值,否则返回FALSE
。The function
match
works on vectors:match
only returns the first encounter of a match, as you requested. It returns the position in the second argument of the values in the first argument.For multiple matching,
%in%
is the way to go:%in%
returns a logical vector as long as the first argument, with aTRUE
if that value can be found in the second argument and aFALSE
otherwise.funprog {base} 中的函数
Position
也可以完成这项工作。它允许您传递任意函数,并返回第一个或最后一个匹配项。位置(f, x, right = FALSE, nomatch = NA_integer)
the function
Position
in funprog {base} also does the job. It allows you to pass an arbitrary function, and returns the first or last match.Position(f, x, right = FALSE, nomatch = NA_integer)
关于上述方法效率的一个小注释:
所以,最好的方法是
A small note about the efficiency of abovementioned methods:
So, the best one is
是的,我们可以按如下方式查找向量中元素的索引:
这是查找向量中元素索引的最有效方法之一。
Yes, we can find the index of an element in a vector as follows:
This is one of the most efficient methods of finding the index of an element in a vector.
vec_match()
的工作方式与基本 Rmatch()
类似,但有一个明显的区别。它可以更好地控制NA
匹配:vec_match()
works like base Rmatch()
with one noticeable difference. It gives more control overNA
matching: