Soy nuevo en R y estoy tratando de manejar las funciones de la familia de aplicaciones. Específicamente, estoy tratando de escribir una función de orden superior que acepte vectores de 2 caracteres, "host" e "invitado" (que no necesitan ser de la misma longitud) y devuélvame un vector de índice de la misma longitud que "host ", con los elementos resultantes correspondientes a sus índices en invitado (NA si no está allí).¿Cómo puedo vectorizar esta función para devolver un vector de índice?
host <- c("A","B","C","D")
guest <- c("D","C","A","F")
matchIndices <- function(x,y)
{
return(match(x,y))
}
Este código devuelve 3 como se esperaba: (? Sapply)
matchIndices(host[1],guest)
Este es el lazo que me gustaría ser capaz de reemplazar con una función de aplicar sucinta
Este código "funciona" porque produce el resultado a continuación, pero realmente quiero que el resultado sea un vector, y tengo la corazonada de que una de las funciones de aplicar hará el truco. Estoy atascado en cómo escribirlo. Cualquier ayuda sería muy apreciada. Gracias.
3; A; NA; B; 2; C; 1; D;
que sólo podía hacer 'sapply (host, partido, Habitación) ', no hay necesidad de definir' matchIndices' –
@Prasad Sí, podría, pero lo dejé como si fuera a mostrar cómo aplicar sapply una función de usuario de esta manera. La razón por la que lo dejé fue que todo esto se puede hacer con 'match' directamente, ya que acepta un primer argumento vectorial. Ver mi respuesta actualizada. –
Esto es fabuloso. Muchas gracias. "match (host, guest)" es perfecto. No me di cuenta de que podría ser tan compacto. – user297400