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.

Foi útil?

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
scroll top