Como obter o índice de uma carta de uma lista AZ?
Pergunta
Eu quero obter o índice de uma carta específica, por exemplo
> match(LETTERS,"G")
[1] NA NA NA NA NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
Me dá que a carta existe, mas quero que ela retorne 6 neste caso para o sexto elemento da lista.
Solução
Ou which
:
which(LETTERS=="G")
o which
A função foi projetada especificamente para esse fim:
Dê os índices 'verdadeiros' de um objeto lógico, permitindo índices de matriz.
o which
A função também pode retornar o índice para lógico TRUE
Valores em uma matriz definindo o argumento arr.ind como true (isso é muito útil).
> which(matrix(LETTERS, nrow=5)=="G")
[1] 7
> which(matrix(LETTERS, nrow=5)=="G", arr.ind=TRUE)
row col
[1,] 2 2
Você também pode querer ler Esta postagem recente do blog de Seth Falcon onde ele fala sobre otimizá -lo em C.
Outras dicas
Só pelo aviso: acho que você queria
match("G", LETTERS)
# [1] 7
Benefícios desta solução sobre grep
ou which
é que você pode usá -lo no vetor de cartas:
match(c("S","T","A","C","K","O","V","E","R","F","L","O","W"), LETTERS)
# gives:
# [1] 19 20 1 3 11 15 22 5 18 6 12 15 23
Tentar grep
:
R> grep("G", LETTERS)
[1] 7
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow