使用多个条件匹配语句

时间:2013-10-03 14:57:06

标签: r

请考虑以下代码:

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

返回1

现在假设我想在缺少其他元素的情况下返回元素的索引。例如:

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

将返回

1 NA

我想仅在元素存在时才返回索引。所以它应该返回1。是否存在&#34;匹配&#34; R?

中的陈述

2 个答案:

答案 0 :(得分: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的答案,但顺序是相反的。

答案 1 :(得分:1)

如何剥夺NAs?

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

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