%in%의 반대: 벡터에 지정된 값이 있는 행 제외
데이터 프레임 D1의 범주형 변수 V1은 A부터 Z까지의 문자로 표시되는 값을 가질 수 있습니다.일부 값(예: B, N 및 T)을 제외한 부분 집합 D2를 생성하려고 합니다.기본적으로, 저는 다음과 반대되는 명령을 원합니다.%in%
D2 = subset(D1, V1 %in% c("B", "N", "T"))
사용할 수 있습니다.!
연산자는 기본적으로 모든 TRUE와 모든 FALSE를 만듭니다.그래서:
D2 = subset(D1, !(V1 %in% c('B','N','T')))
편집: 사용자가 직접 연산자를 만들 수도 있습니다.
'%!in%' <- function(x,y)!('%in%'(x,y))
c(1,3,11)%!in%1:10
[1] FALSE FALSE TRUE
어때요?
`%ni%` <- Negate(`%in%`)
c(1,3,11) %ni% 1:10
# [1] FALSE FALSE TRUE
다음은 다음을 사용하는 버전입니다.filter
에dplyr
!:로 논리를 부정함으로써 허용된 답변과 동일한 기법을 적용합니다.
D2 <- D1 %>% dplyr::filter(!V1 %in% c('B','N','T'))
의 코드를 보면,%in%
function (x, table) match(x, table, nomatch = 0L) > 0L
그러면 당신은 당신의 반대 버전을 쓸 수 있을 것입니다.사용합니다
`%not in%` <- function (x, table) is.na(match(x, table, nomatch=NA_integer_))
다른 방법은 다음과 같습니다.
function (x, table) match(x, table, nomatch = 0L) == 0L
또한 에서를 사용하면 빠르고 깔끔하게 트릭을 수행할 수 있습니다.
`%not_in%` <- purrr::negate(`%in%`)
예를 들어, 사용법은 다음과 같습니다.
c("cat", "dog") %not_in% c("dog", "mouse")
purrr::compose()
다음과 같이 나중에 사용할 수 있도록 빠르게 정의할 수 있는 또 다른 방법입니다.
`%!in%` <- compose(`!`, `%in%`)
다른 솔루션은 다음을 사용할 수 있습니다.setdiff
D1 = c("A",..., "Z") ; D0 = c("B","N","T")
D2 = setdiff(D1, D0)
D2
원하는 부분 집합입니다.
흐미스카스%nin%
기능, 이렇게 해야 합니다.
https://www.rdocumentation.org/packages/Hmisc/versions/4.4-0/topics/%25nin%25
library(roperators)
1 %ni% 2:10
사용자 지정 infix 연산자를 자주 사용해야 하는 경우 각 스크립트나 프로젝트에서 동일한 정확한 함수를 반복적으로 선언하는 것보다 패키지에 포함시키는 것이 더 쉽습니다.
패키지 축소에는 다음이 포함됩니다.%!in%
.
%in에 대한 도움말,help("%in%")
예제 섹션에는 다음과 같은 not in의 정의를 포함합니다.
"%w/o%" <- function(x, y) x[!x %in% y] #-- x without y
시도해 보겠습니다.
c(2,3,4) %w/o% c(2,8,9)
[1] 3 4
대안적으로
"%w/o%" <- function(x, y) !x %in% y #-- x without y
c(2,3,4) %w/o% c(2,8,9)
# [1] FALSE TRUE TRUE
require(TSDT)
c(1,3,11) %nin% 1:10
# [1] FALSE FALSE TRUE
자세한 내용은 다음을 참조하십시오. https://cran.r-project.org/web/packages/TSDT/TSDT.pdf
Frank Harrell의 R 유틸리티 함수 패키지에서, 그는 원래 질문과 정확히 일치하는 %n%(내에 없음)를 가지고 있습니다.휠을 다시 발명할 필요가 없습니다.
언급URL : https://stackoverflow.com/questions/5831794/opposite-of-in-exclude-rows-with-values-specified-in-a-vector
'programing' 카테고리의 다른 글
PowerShell & 출력의 개별 라인에 타임스탬프를 추가하려면 어떻게 해야 합니까? (0) | 2023.07.25 |
---|---|
명령줄 출력 업데이트(즉, 진행 (0) | 2023.07.25 |
ASP.NET 마이그레이션 '복합 기본 키 오류' 추가 유창한 API 사용 방법 (0) | 2023.06.15 |
Oracle에서 보기를 만드는 데 사용되는 SQL을 검색하는 방법은 무엇입니까? (0) | 2023.06.15 |
원격 호스트가 연결을 닫았습니다.오류 코드는 0x800704입니다.CD (0) | 2023.06.15 |