Я новичок в R и пытаюсь получить дескриптор применимого семейства функций. В частности, я пытаюсь написать функцию более высокого порядка, которая будет принимать 2 символьных вектора, «хост» и «гость» (которые не должны иметь одинаковую длину) и вернуть мне индексный указатель той же длины, что и «хост» », а результирующие элементы соответствуют их индексам в гостях (NA, если нет).Как я могу векторизовать эту функцию для возврата вектора индекса?
host <- c("A","B","C","D")
guest <- c("D","C","A","F")
matchIndices <- function(x,y)
{
return(match(x,y))
}
Этот код возвращает 3, как и ожидалось: (? Sapply)
matchIndices(host[1],guest)
Это цикл я хотел бы, чтобы иметь возможность заменить с емким функции применяются
Этот код «работает» в том, что он выводит результат ниже, но я действительно хочу, чтобы результат был вектором, и у меня есть догадка, что одна из прикладных функций выполнит трюк. Я просто зациклился на том, как писать. Любая помощь будет оценена по достоинству. Благодарю.
3; A; NA; B; 2; C; 1; D;
вы можете просто сделать 'sapply (хост, матч, гость) ', не нужно определять' matchIndices' –
@Prasad Да, вы могли бы, но я оставил его так, как будто он показывал, как использовать функцию пользователя таким образом. Причина, по которой я ее оставил, - это все можно сделать с помощью 'match' непосредственно, поскольку он принимает векторный первый аргумент. См. Мой обновленный ответ. –
Это потрясающе. Большое спасибо. «match (host, guest)» идеально. Я не понимал, что это может быть так компактно. – user297400