この単純な検索を試みましたが、Rのパーセント(_%
_)シンボルで何も見つかりませんでした。
次のコードで_%in%
_はどういう意味ですか?
time(x) %in% time(y)
ここで、x
とy
は行列です。
_%in%
_および_%stuff%
_パターンに従う類似の関数のヘルプを検索するにはどうすればよいですか?
関連する質問:
ヘルプページを見つけるには、引用符で囲みます。これらの仕事のいずれか
_> help("%in%")
> ?"%in%"
_
ヘルプページにアクセスすると、それが表示されます
「%in%」は現在定義されています
‘「%in%」<-function(x、table)match(x、table、nomatch = 0)> 0’
time
はジェネリックであるため、_X2
_が何であるかを知らずにtime(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
_
"%" doesは%in%
演算子のコンテキストだけでなく、それ自体ですべて意味を持つため、GSeeまたはSathishの答えが十分に進んだとは思いませんでした。これは、ユーザーが新しい中置演算子を定義するためのメカニズムです。これは、%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)
%
文字は、日付、日付時刻、およびstrptime
、formatC
、sprintf
などのCタイプのフォーマット関数の解析にも重要です。
それが最初に書かれたので、%
-側面演算子のさらに別の使用法を示すmagrittr
精緻化を伴うdplyr
パッケージの出現を見てきました。
したがって、最も一般的な答えは、%
シンボルがRパーサーによって特別に処理されるということです。パーサーはplotmath式の処理に使用されるため、?plotmath
ヘルプページでグラフィックアノテーションの広範なオプションも表示されます。
%op%
は、中置記号二項演算子を表します。 %
を使用する組み込み演算子がいくつかあり、独自の演算子を作成することもできます。
(単一の%
記号はRのキーワードではありません。キーワードのリストは ?Reserved
ヘルプページで確認できます。)
二項演算子のヘルプはどのように入手できますか?
標準の変数名ではないものと同様に、用語を引用符または逆引用符で囲む必要があります。
?"%in%"
?`%in%`
クレジット: GSeeの答え 。
%in%
は何をしますか?
?`%in%`
ヘルプページ(?match
は実際にはmatch
の挿入バージョンにすぎないため、実際には%in%
ヘルプページに記載されています)
[
%in%
]は、左オペランドに一致するかどうかを示す論理ベクトルを返します
カテゴリ変数で最も一般的に使用されますが、数値でも使用できます。
c("a", "A") %in% letters
## [1] TRUE FALSE
1:4 %in% c(2, 3, 5, 7, 11)
## [1] FALSE TRUE TRUE FALSE
クレジット: GSee's answer 、 Ari's answer 、 Sathish's answer .
独自のインフィックス二項演算子を作成するにはどうすればよいですか?
これらは関数であり、他の関数と同じ方法で定義できますが、いくつかの制限があります。
たとえば、これは行列のべき乗演算子を定義します。
`%^%` <- function(x, y) matrixcalc::matrix.power(x, y)
matrix(1:4, 2) %^% 3
クレジット: BondedDust's answer 、 Ari's answer 。
他にどのような%
演算子がありますか?
Inbase R:
%/%
および%%
は、それぞれ 整数除算 および モジュラー除算 を実行し、 ?Arithmetic
で説明されています。ヘルプページ。
Inggplot2 :
%+%
は、ggplotのデータフレームを置き換えます。
%+replace%
は、ggplotのテーマ要素を変更します。
%inside%
(内部)は、範囲内の値をチェックします。
%||%
(内部)は、NULL
値の場合のデフォルト値を提供します。この関数は、devtools、reshape2、roxygen2、knitrの内部にも現れます。 (knitrでは%n%
と呼ばれます。)
Inmagrittr :
%>%
は、左側を右側の式にパイプします。
%<>%
は、左側を右側の式にパイプし、結果を左側のオブジェクトに割り当てます。
%T>%
は、左側を右側の式にパイプします。これは、副作用のみに使用し、左側を返します。
%,%
は、機能シーケンスを構築します。
%$%
は、data.frameの列またはリストのメンバーを公開します。
Indata.table:
%between%
範囲内の値をチェックします。
%chin%
は%in%
に似ており、文字ベクトル用に最適化されています。
%like%
正規表現の一致をチェックします。
InHmisc:
%nin%
は、%in%
の反対を返します。
devtools:
%:::%
(内部)は、文字列として渡されたネームスペースから変数を取得します。
Insp:
%over%
は空間結合を実行します(たとえば、どのポリゴンがいくつかのポイントに対応するか?)
Inrebus:
%R%
は、regex
オブジェクトの要素を連結します。
より一般的には、以下を使用して、マシンにインストールされているすべてのパッケージ内のすべてのオペレーターを見つけることができます。
library(magrittr)
ip <- installed.packages() %>% rownames
(ops <- setNames(ip, ip) %>%
lapply(
function(pkg)
{
rdx_file <- system.file("R", paste0(pkg, ".rdx"), package = pkg)
if(file.exists(rdx_file))
{
rdx <- readRDS(rdx_file)
fn_names <- names(rdx$variables)
fn_names[grepl("^%", fn_names)]
}
}
) %>%
unlist
)
より一般的には、%foo%
は二項演算子の構文です。 Rの2項演算子は、実際には変装した単なる関数であり、2つの引数を取ります(演算子の前と後が関数の最初の2つの引数になります)。
例えば:
> `%in%`(1:5,4:6)
[1] FALSE FALSE FALSE TRUE TRUE
%in%
はベースRで定義されていますが、独自のバイナリ関数を定義することもできます。
`%hi%` <- function(x,y) cat(x,y,"\n")
> "oh" %hi% "my"
oh my
%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:列からの複数の値のサブセット化 このサイト の例を参照してください