考虑以下代码:
list <- c("apple", "pear", "orange")
match("apple", list)
这返回1
。
现在假设如果缺少其他元素,我想返回一个元素的索引。例如:
match(c("apple", "banana"), list)
会回来
1 NA
我只想在元素存在时返回索引。所以它应该只是返回1
。R中是否有“匹配存在”语句?
考虑以下代码:
list <- c("apple", "pear", "orange")
match("apple", list)
这返回1
。
现在假设如果缺少其他元素,我想返回一个元素的索引。例如:
match(c("apple", "banana"), list)
会回来
1 NA
我只想在元素存在时返回索引。所以它应该只是返回1
。R中是否有“匹配存在”语句?
您问“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 的回答,但顺序颠倒了。
只去掉 NA 怎么样?
> na.omit(match(c("apple", "banana"), list) )
[1] 1
attr(,"na.action")
[1] 2
attr(,"class")
[1] "exclude"
忽略属性,这只是 1 的向量。