2013-10-03 2 views
0

Рассмотрим следующий код:Match заявление с использованием нескольких условий

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

Это возвращает 1.

Теперь предположим, что я хочу вернуть индекс элемента, если отсутствует какой-либо другой элемент. Например:

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

вернется

1 NA

Я хочу вернуть индекс только если элемент существует. Поэтому он должен просто вернуть 1. Есть ли выражение «матч существует» в R?

+0

Что должно «yourmatch (c (« яблоко »,« банан »,« груша »), список)' return? – TheComeOnMan

+2

Я предлагаю вам не называть ничего 'list' (поскольку это уже существует). – Frank

ответ

1

Howbout просто удаляет НС?

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

игнорируя атрибуты, это просто вектор 1.

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 отвечают, но порядок обратный.

Смежные вопросы