мне нужно найти соответствие между 2 векторами:Как найти точное соответствие между двумя векторами?
y=c("13AD10","13AD11","13AD12","13AD13","13AD14","13AD16","13AD17","13AD19","13AD1","13AD20","13AD21","13AD24","13AD25","13AD2","13AD3","13AD5","13AD6","13AD7","13AD8","13AD9","13HD10","13HD11","13HD12","13HD14","13HD5","13HD7")
to_find=c("13AD1","13AD3","13AD7","13AD13","13AD20")
Основываясь на том, что я нашел на этом сайте, я попытался
select=grep(paste(to_find,collapse="|"),y)
, который возвращает слишком много записей (все, начиная с 13AD1 есть)
[1] 1 2 3 4 5 6 7 8 9 10 15 18
Я попытался
select=which(y==to_find)
, но не все элементы включены
[1] 4 10 18
В самом деле, я получаю эту
y==to_find
[1] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
[21] FALSE FALSE FALSE FALSE FALSE FALSE
Несмотря на то, что, например
to_find[1]==y[9]
[1] TRUE
Я совершенно запутать, почему я получаю разные результаты для y == to_find и to_find 1 == y [9]? Любая идея о том, как получить точное соответствие между моими векторами? Спасибо за вашу помощь.
PS: вопрос частично ответил там Matching up two vectors in R, но этот пост не содержит объяснения о Grep и ==
с этим подходом не сразу понятно, какой индекс соответствует тому, что значение в 'to_find' (если, конечно, OP не заботится). 'match (to_find, y)' ниже - лучший вариант, я думаю –
@stasg Вы правы –