Une variable catégorielle V1 dans une trame de données D1 peut avoir des valeurs représentées par les lettres de A à Z. Je veux créer un sous-ensemble D2, qui exclut certaines valeurs, disons, B, N et T. Fondamentalement, je veux une commande qui est l'opposé de %in%
D2 = subset(D1, V1 %in% c('B','N',T'))
!(x %in% y)
). La vie peut être facile parfois ...Réponses:
Vous pouvez utiliser l'
!
opérateur pour rendre fondamentalement n'importe quel VRAI FAUX et chaque FAUX VRAI. alors:EDIT: Vous pouvez également faire vous-même un opérateur:
la source
?"%in%"
) où le nouvel opérateur est appelé%w/o%
.?Negate
eg"%ni%" <- Negate("%in%")
subset(df, variable %ni% c("A", "B"))
, mais pas lorsqu'il est utilisé directement, par exemplesubset(df, variable Negate("%in%") c("A", "B"))
%
. Pour créer un opérateur, vous devez affecter une fonction avec deux opérandes à un nom commençant et finissant par%
.Que diriez-vous:
la source
Si vous regardez le code de
%in%
alors vous devriez pouvoir écrire votre version de l'opposé. j'utilise
Une autre façon est:
la source
Voici une version utilisant
filter
indplyr
qui applique la même technique que la réponse acceptée en niant la logique avec!:la source
L'utilisation de
negate
from faitpurrr
également l'affaire rapidement et proprement:Ensuite, l'utilisation est, par exemple,
la source
Negate
qui fait la même chose. La seule différence est que Purrr fait appelas_mapper
à ce que vous passez, tout enNegate
appelantmatch.fun
. rdocumentation.org/packages/purrr/versions/0.2.5/topics/… stat.ethz.ch/R-manual/R-devel/library/base/html/match.fun.htmlpurrr::compose()
est un autre moyen rapide de le définir pour une utilisation ultérieure, comme dans:la source
Une autre solution pourrait être d'utiliser
setdiff
D2
est votre sous-ensemble souhaité.la source
Hmisc a une
%nin%
fonction, ce qui devrait le faire.https://www.rdocumentation.org/packages/Hmisc/versions/4.4-0/topics/%25nin%25
la source
Je pense que l'utilisation la plus claire est
la source
la source
Pour plus d'informations, vous pouvez vous référer à: https://cran.r-project.org/web/packages/TSDT/TSDT.pdf
la source
L'aide pour% in%
help("%in%")
,, inclut, dans la section Exemples, cette définition de pas dans,"%w/o%" <- function(x, y) x[!x %in% y] #-- x without y
Essayons:
Alternativement
la source