5

我正在使用 match 来获取元素是否在列表中。例如我的清单是:

  c("a","b","h","e"...) and so on

如果我想查看元素 h 是否在列表中,我正在以这种方式使用 match:

  if ("h" %in% v){do something}

我怎样才能得到它在列表中找到元素的位置?谢谢

4

3 回答 3

6

如果你想知道位置使用which

l <- c("a","b","h","e")
which(l=='h') 
[1] 3   # It'll give you the position, 'h' is the third element of 'l'

请注意,这l是一个向量,而不是您提到的列表。

于 2012-10-08T16:55:01.470 回答
4

如果您想知道位置,请使用match

l <- c("a","b","h","e")
match("h", l)

在这里不会有任何不同,但通常会快得多。

于 2012-10-09T14:11:53.793 回答
3

which函数会告诉您一个项目在向量中的哪个位置“匹配”。将%in%返回与其第一个参数长度相同的逻辑向量,并且if只会查看第一个逻辑值,因此其自身无法正常工作。你可以这样做:

if( any("h" %in& v) ) { do something }

any功能允许您“折叠”结果%in%

于 2012-10-08T16:56:51.870 回答