%op%
désigne un infixe opérateur binaire . Il existe plusieurs opérateurs intégrés utilisant %
et vous pouvez également créer votre propre site.
(Un seul %
n'est pas un mot-clé dans R. Vous pouvez voir une liste de mots-clés sur le site Web de la société ?Reserved
page d'aide).
Comment obtenir de l'aide sur les opérateurs binaires ?
Comme pour tout ce qui n'est pas un nom de variable standard, vous devez mettre le terme entre guillemets ou entre guillemets inversés.
?"%in%"
?`%in%`
Crédit : La réponse de GSee .
Qu'est-ce que %in%
faire ?
Comme décrit sur le ?`%in%`
(qui est en fait la page d'aide ?match
page d'aide depuis %in%
n'est en fait qu'une version infixe de match
.),
[ %in%
] renvoie un vecteur logique indiquant s'il y a une correspondance ou non pour son opérande gauche
Il est le plus souvent utilisé avec des variables catégorielles, bien qu'il puisse également être utilisé avec des nombres.
c("a", "A") %in% letters
## [1] TRUE FALSE
1:4 %in% c(2, 3, 5, 7, 11)
## [1] FALSE TRUE TRUE FALSE
Crédit : La réponse de GSee , Réponse d'Ari , La réponse de Sathish .
Comment créer mes propres opérateurs binaires infixes ?
Il s'agit de fonctions, qui peuvent être définies de la même manière que n'importe quelle autre fonction, à quelques restrictions près.
- C'est un binaire la fonction doit donc prendre exactement deux arguments.
- Le nom n'étant pas standard, il doit être écrit avec des guillemets ou des apostrophes.
Par exemple, ceci définit un opérateur de puissance matriciel.
`%^%` <- function(x, y) matrixcalc::matrix.power(x, y)
matrix(1:4, 2) %^% 3
Crédit : La réponse de BondedDust , Réponse d'Ari .
Quels autres %
y a-t-il des opérateurs ?
Sur base R :
%/%
y %%
effectuer division de nombres entiers y division modulaire respectivement, et sont décrites sur la page ?Arithmetic
page d'aide.
%o%
donne le produit extérieur de tableaux.
%*%
réalise multiplication matricielle .
%x%
effectue le produit de Kronecker de tableaux.
Sur ggplot2 :
%+%
remplace le cadre de données dans un ggplot.
%+replace%
modifie les éléments du thème dans un ggplot.
%inside%
(interne) vérifie les valeurs dans une plage.
%||%
(interne) fournit une valeur par défaut en cas de NULL
valeurs. Cette fonction apparaît également en interne dans devtools, reshape2, roxygen2 et knitr. (Dans knitr, elle est appelée %n%
.)
Sur magrittr :
%>%
transforme le côté gauche en une expression du côté droit.
%<>%
pipe le côté gauche dans une expression du côté droit, puis réaffecte le résultat dans l'objet du côté gauche.
%T>%
transforme le côté gauche en une expression sur le côté droit, qu'il utilise uniquement pour ses effets secondaires, en retournant le côté gauche.
%,%
construit une séquence fonctionnelle.
%$%
expose les colonnes d'un data.frame ou les membres d'une liste.
Sur table.de.données :
%between%
vérifie les valeurs dans une plage.
%chin%
c'est comme %in%
optimisé pour les vecteurs de caractères.
%like%
vérifie les correspondances entre les expressions régulières.
Sur Hmisc :
%nin%
renvoie l'opposé de %in%
.
Sur devtools :
%:::%
(interne) obtient une variable à partir d'un espace de nom passé comme une chaîne.
Sur sp :
%over%
effectue une jointure spatiale (par exemple, quel polygone correspond à certains points ?)
Sur rébus :
%R%
concatène les éléments d'un regex
objet.
Plus généralement, vous pouvez trouver tous les opérateurs dans tous les paquets installés sur votre machine en utilisant :
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
)