特定の文字のインデックスを取得したい、例えば
> 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
文字が存在することを教えてくれますが、この場合、リストの6番目の要素に対して6を返したいと思います。
またはwhich
:
which(LETTERS=="G")
このwhich
関数は、この目的のために特別に設計されています。
論理オブジェクトの 'TRUE' インデックスを指定して、配列インデックスを許可します。
このwhich
関数はTRUE
、arr.ind 引数を TRUE に設定することにより、マトリックス内の論理値のインデックスを返すこともできます (これは非常に便利です)。
> which(matrix(LETTERS, nrow=5)=="G")
[1] 7
> which(matrix(LETTERS, nrow=5)=="G", arr.ind=TRUE)
row col
[1,] 2 2
また、C での最適化について語っているSeth Falcon の最近のブログ記事もお読みください。
念のため:あなたが望んでいたと思います
match("G", LETTERS)
# [1] 7
このソリューションの利点はgrep
、which
文字のベクトルで使用できることです。
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
試してくださいgrep
:
R> grep("G", LETTERS)
[1] 7