문제

로 구성된 데이터 사용

dtl <- replicate(10,data.table(id=sample(letters,10),val=sample(10)), simplify=F)
lapply(dtl, function(x){setkey(x,'id')})
.

DTL [[n]]에없는 ID 에없는 ID 에있는 DTL [[N + 1]]의 행을 포함하는 DataTables 목록을 추출해야합니다.나는 그것이 와 같을 것이라고 가정한다.

dtl2 <- list(setdiff(dtl[[1]][['id']],dtl[[2]][['id']]),setdiff(dtl[[2]][['id']],dtl[[3]][['id']]...)
.

SetDiff는 ID 열만 고려해야하지만 결과에 결과가 각 DataTable의 모든 열을 포함 할 것으로 예상됩니다.

도움이 되었습니까?

해결책

이것은 이것이 당신을 위해 그것을 할 것이라고 생각합니다 :

mapply(setdiff, head(dtl, -1), tail(dtl, -1), SIMPLIFY = FALSE)
.

편집 : 새로운 예상 출력을 사용하면 위와 같이 mapply를 여전히 사용하지만 다음 두 가지 변경 사항 중 하나는 다음과 같습니다.

  1. setdifffunction(x,y)setdiff(x$id, y$id) 로 바꿉니다.
  2. dtlids <- lapply(dtl, "[", "id") 로 바꿉니다.

    edit2 : : 당신이 제공 한 코드와 일치하지 않는 일반 영어 설명을 추가하여 예상 출력을 다시 변경했습니다 ... i 생각하기 이제 이것을 찾고 있습니다 :

    mapply(function(x,y)y[setdiff(y$id, x$id), ],
           head(dtl, -1), tail(dtl, -1), SIMPLIFY = FALSE)
    
    .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top