1

特定の文字のインデックスを取得したい、例えば

>  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を返したいと思います。

4

3 に答える 3

7

または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 の最近のブログ記事もお読みください。

于 2010-03-16T20:47:52.067 に答える
7

念のため:あなたが望んでいたと思います

match("G", LETTERS)
# [1] 7

このソリューションの利点はgrepwhich文字のベクトルで使用できることです。

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
于 2010-03-17T09:16:33.747 に答える
4

試してくださいgrep

R> grep("G", LETTERS)
[1] 7
于 2010-03-16T20:34:00.550 に答える