Zmienna jakościowa V1 w ramce danych D1 może mieć wartości reprezentowane przez litery od A do Z. Chcę utworzyć podzbiór D2, który wyklucza niektóre wartości, powiedzmy B, N i T. Zasadniczo chcę polecenia, które jest przeciwieństwo %in%
D2 = subset(D1, V1 %in% c('B','N',T'))
!(x %in% y)
). Czasami życie może być łatwe ...Odpowiedzi:
Możesz użyć
!
operatora, aby w zasadzie wykonać PRAWDZIWĄ FAŁSZ i każdą FAŁSZ PRAWDZIWĄ. więc:EDYCJA: Możesz także sam stworzyć operatora:
źródło
?"%in%"
), gdzie wywoływany jest nowy operator%w/o%
.?Negate
np."%ni%" <- Negate("%in%")
subset(df, variable %ni% c("A", "B"))
Ale nie przy bezpośrednim użyciu, np.subset(df, variable Negate("%in%") c("A", "B"))
%
. Aby utworzyć operator, musisz przypisać funkcję z dwoma operandami do nazwy rozpoczynającej się i kończącej na%
.Co powiesz na:
źródło
Jeśli spojrzysz na kod
%in%
wtedy powinieneś być w stanie napisać swoją wersję przeciwną. używam
Innym sposobem jest:
źródło
Oto wersja,
filter
wdplyr
której zastosowano tę samą technikę, co przyjęta odpowiedź, negując logikę za pomocą!źródło
Używanie
negate
z pozwalapurrr
również szybko i starannie wykonać lewę:Zatem użycie to na przykład
źródło
Negate
który robi to samo. Jedyną różnicą jest to, że mruczenie wywołujeas_mapper
to, co przekazujesz, podczasNegate
połączeńmatch.fun
. rdocumentation.org/packages/purrr/versions/0.2.5/topics/… stat.ethz.ch/R-manual/R-devel/library/base/html/match.fun.htmlpurrr::compose()
to kolejny szybki sposób na zdefiniowanie tego do późniejszego wykorzystania, jak w:źródło
Można użyć innego rozwiązania
setdiff
D2
jest twoim pożądanym podzbiorem.źródło
Hmisc ma
%nin%
funkcję, która powinna to zrobić.https://www.rdocumentation.org/packages/Hmisc/versions/4.4-0/topics/%25nin%25
źródło
Myślę, że najczystsze użycie jest po prostu
źródło
źródło
Więcej informacji można znaleźć na stronie : https://cran.r-project.org/web/packages/TSDT/TSDT.pdf
źródło
Pomoc dla% w%
help("%in%")
obejmuje w sekcji Przykłady tę definicję braku w,"%w/o%" <- function(x, y) x[!x %in% y] #-- x without y
Spróbujmy:
Alternatywnie
źródło