data.table
이전 코드가 작동하지 않는 이유는 무엇입니까?
수색…
소개
data.table 패키지는 많은 변화와 혁신을 거듭했습니다. 다음은 기존 코드를보고 기존 블로그 게시물을 검토하는 데 도움이 될 수있는 몇 가지 잠재적 위험 요소입니다.
고유하고 복제 된 데이터가 더 이상 키순 데이터 테이블에서 작동하지 않습니다.
이것은 data.table> = 1.9.8로 이동하는 사람들을위한 것입니다.
애완 동물 소유자 및 이름의 데이터 세트가 있지만 일부 반복 된 데이터가 수집 된 것으로 의심됩니다.
library(data.table)
DT <- data.table(pet = c("dog","dog","cat","dog"),
owner = c("Alice","Bob","Charlie","Alice"),
entry.date = c("31/12/2015","31/12/2015","14/2/2016","14/2/2016"),
key = "owner")
> tables()
NAME NROW NCOL MB COLS KEY
[1,] DT 4 3 1 pet,owner,entry.date owner
Total: 1MB
테이블을 키잉하여 불러 오면 그것을 소트 할 것이다. 앨리스가 두 번 입력되었습니다.
> DT
pet owner entry.date
1: dog Alice 31/12/2015
2: dog Alice 14/2/2016
3: dog Bob 31/12/2015
4: cat Charlie 14/2/2016
데이터를 가장 최근의 데이터 캡처 날짜를 사용하여 가장 최근의 값을 TRUE로 설정하여 unique
키를 사용하여 데이터에서 중복 된 데이터를 제거한다고 가정 해 보겠습니다.
1.9.8
clean.DT <- unique(DT, fromLast = TRUE)
> tables()
NAME NROW NCOL MB COLS KEY
[1,] clean.DT 3 3 1 pet,owner,entry.date owner
[2,] DT 4 3 1 pet,owner,entry.date owner
Total: 2MB
앨리스 중복이 제거되었습니다.
1.9.8
clean.DT <- unique(DT, fromLast = TRUE)
> tables()
NAME NROW NCOL MB COLS KEY
[1,] clean.DT 4 3 1 pet,owner,entry.date owner
[2,] DT 4 3 1 pet,owner,entry.date owner
이것은 작동하지 않습니다. 여전히 4 행!
고치다
by=
매개 변수 를 사용하십시오. by=
매개 변수 는 더 이상 기본값이 아니며 모든 열에 사용됩니다.
clean.DT <- unique(DT, by = key(DT), fromLast = TRUE)
이제 모든 것이 잘됩니다.
> clean.DT
pet owner entry.date
1: dog Alice 14/2/2016
2: dog Bob 31/12/2015
3: cat Charlie 14/2/2016
세부 정보 및 임시 수정본
자세한 내용 은 NEWS 릴리즈 노트의 1 번 항목 을 참조하십시오.
v1.9.8의 변경 사항 (CRAN의 경우 2016 년 11 월 25 일)
잠재적 인 변화의 변화
- 기본적으로 모든 컬럼은
unique()
,duplicated()
및uniqueN()
data.table 메소드, # 1284 및 # 1841에 의해 사용됩니다. 이전 동작을 복원하려면options(datatable.old.unique.by.key=TRUE)
. 1 년 후 이전 기본 설정을 복원하는이 옵션은 경고와 함께 사용되지 않습니다. 2 년 후에 옵션이 제거됩니다. 명확하게하기 위해by=key(DT)
를 명시 적으로 전달하십시오. 기본값에 의존하는 코드 만 영향을받습니다. data.table을 사용하는 CRAN 및 Bioconductor 패키지가 출시 전에 확인되었습니다. 9 명이 변경해야하고 통고를 받았다. 테스트 커버리지가없는 코드 라인은이 체크에 의해 놓친 것이다. CRAN 또는 Bioconductor에없는 패키지는 확인되지 않았습니다.
따라서 코드가 수정 될 때까지 임시 해결 방법으로 옵션을 사용할 수 있습니다.
options(datatable.old.unique.by.key=TRUE)
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow