46

この簡単な検索を試みましたが%、Rのパーセント()記号には何も見つかりませんでした。

%in%次のコードではどういう意味ですか?

time(x) %in% time(y)ここでx、およびyは行列です。

%in%%stuff%ヘルプファイルが見つからないので、パターンに従ったヘルプや同様の機能を検索するにはどうすればよいですか?

関連する質問:

4

5 に答える 5

57

「%」は演算子のコンテキストだけでなく、それ自体で意味を持っているため、GSeeまたはSathishの回答が十分に進んでいるとは思いませんでした%in%。これは、ユーザーが新しい中置演算子を定義するためのメカニズムです。%in%これは、中置演算子またはそのより一般的な前置祖先の美徳よりもはるかに一般的な問題ですmatch。ペアごとの "s"(um) 演算子を作成するのと同じくらい簡単です。

 `%s%` <- function(x,y) x + y

または、次のように 2 次導関数演算子を作成すると、より興味深いものになる可能性があります。

 `%DD%` <- function(expr, nam="x") { D(D( bquote(.(expr)), nam), nam) }
 expression(x^4) %DD% "x"
 # 4 * (3 * x^2)

-%文字は、日付、日時、および 、 、 などの C タイプ形式関数の解析でもstrptime重要formatCですsprintf

それが最初に書かれて以来、-flanked 演算子のさらに別の使用法を示す精巧なmagrittrパッケージの出現を見てきました。dplyr%

したがって、最も一般的な答えは、%シンボルは R パーサーによって特別に処理されるということです。パーサーはプロット数式の処理に使用されるため、?plotmathヘルプ ページにはグラフィック注釈の広範なオプションも表示されます。

于 2012-10-04T16:24:19.240 に答える
30

ヘルプページを見つけるには、引用符で囲みます。これらの作品のいずれか

> help("%in%")
> ?"%in%"

ヘルプページにアクセスすると、次のことがわかります。

'%in%'は現在次のように定義されています

'&quot;%in% "<-function(x、table)match(x、table、nomatch = 0)> 0'</ p>


はジェネリックなので、何が返ってくるtimeのかわからない。ただし、左側のどのアイテムが右側にもあるかを示します。time(X2)X2%in%

> c(1:5) %in% c(3:8)
[1] FALSE FALSE  TRUE  TRUE  TRUE

も参照してください、intersect

> intersect(c(1:5), c(3:8))
[1] 3 4 5
于 2012-10-04T15:28:27.003 に答える
21

より一般的に%foo%は、二項演算子の構文です。R の二項演算子は、実際には偽装した単なる関数であり、2 つの引数を取ります (演算子の前と後の 1 つが関数の最初の 2 つの引数になります)。

例えば:

> `%in%`(1:5,4:6)
[1] FALSE FALSE FALSE  TRUE  TRUE

はベース R で定義されて%in%いますが、独自の二項関数を定義することもできます。

`%hi%` <- function(x,y) cat(x,y,"\n")
> "oh" %hi% "my"
oh my 
于 2012-10-04T16:17:09.670 に答える
2

%in%は、行列またはデータフレーム内の同じ名前または値の複数のオカレンスを検索してサブセット化するために使用される演算子です。

例1:同じ名前のサブセット

set.seed(133)
x <- runif(5)
names(x) <- letters[1:5]
x[c("a", "d")]
#  a         d 
#  0.5360112 0.4231022

ここで、「d」の名前を「a」に変更します

 names(x)[4] <- "a"

前の添え字を使用して類似した名前とその値を抽出しようとすると、機能しません。結果に注意してください。[1]と[4]の要素がありません。

x[c("a", "a")]

#        a         a 
#    0.5360112 0.5360112 

%in%したがって、二項演算子を使用して、変数内の異なる位置から2つの「a」を抽出できます。

names(x) %in% "a"
#  [1]  TRUE FALSE FALSE  TRUE FALSE

#assign it to a variable called "vec"
 vec <- names(x) %in% "a"

#extract the values of two "a"s
 x[vec]
 #         a         a 
 #  0.5360112 0.4231022 

例2:列からの複数の値のサブセット化例については、このサイトを参照してください

于 2012-10-04T16:00:55.867 に答える