0

考虑以下代码:

list <- c("apple", "pear", "orange")
match("apple", list)

这返回1

现在假设如果缺少其他元素,我想返回一个元素的索引。例如:

match(c("apple", "banana"), list) 

会回来

1 NA

我只想在元素存在时返回索引。所以它应该只是返回1。R中是否有“匹配存在”语句?

4

2 回答 2

2

您问“R 中是否存在“匹配存在”语句?” . 是:(is.element或在 R 中更常见,%in%)。

which(is.element(c("apple", "banana"), list))
# [1] 1

您可能需要根据您想要的结果交换第一个和第二个元素。例如,在评论中使用@Codoremifa 的问题,比较:

> which(is.element(list, c("apple", "banana","pear")))
[1] 1 2
> which(is.element(c("apple", "banana","pear"), list))
[1] 1 3

这同样适用于@Spacedman 的回答,但顺序颠倒了。

于 2013-10-03T15:38:15.083 回答
1

只去掉 NA 怎么样?

> na.omit(match(c("apple", "banana"), list) )
[1] 1
attr(,"na.action")
[1] 2
attr(,"class")
[1] "exclude"

忽略属性,这只是 1 的向量。

于 2013-10-03T15:00:44.770 回答