내가 데이터 테이블 DT가 나는 어쩌면 내가 다른 테이블에서 몇 가지를 결합, 그리고 data.table에서 setkey 주문을 어떻게 취소합니까?
setkey(DT,mykey)
설정 키
와 순서를 변경 말할 수 있습니다.DT=DT2[DT]
원래 행 순서를 복구 할 수있는 방법이 있습니까? 나는 setkey를 사용하기 전에 색인을 명시 적으로 포함함으로써이 작업을 수행 할 수 있음을 알고있다.
N=Nrow(DT)
DT[,orig_index:=1:N]
setkey(DT,mykey)
DT=DT2[DT]
setkey(DT,orig_index)
DT[,orig_index:=NULL]
더 간단한 방법이 있습니까? 세트 키 대신 주문으로이 작업을 수행했다면 조금 더 간단합니다.
o=order(DT$mykey)
uo=order(o)
setkey(DT,mykey)
DT=DT2[DT]
DT=DT[uo,]
그것은 것 종류의 멋진 setkey에 여기이
setkey(DT,mykey,save.unset=T)
DT=DT2[DT]
unsetkey(DT)
처럼 뭔가 반전 할 수 있는지 추측 할 수 save.unset T가 될 수 있도록 마지막 재정렬을 저장 data.table 말할 것 = 반대로.
더 나은아직, 어쩌면
setkey(DT, reorder=F)
DT=DT2[DT]
이 옵션은 조인에 대한 키 순서를 사용하는 data.table 말할 것 실제로 DT의 순서를 변경하지 않고 뭐든간에. 이것이 가능하거나 자연스럽지 않은지 확실하지 않습니다.
나는 data.table에 같은이 작업을 수행 할 수있는 방법을 알고 아닙니다. 필자는 키 기둥 *과 Matthew의 자동 재정렬 기능이 없기 때문에 기능 요청을 기꺼이 받아 들였습니다. 따라서 Matthew가이 게시물을 검토 할 때 특별한 이유가없는 한이 기능을 기능 요청으로 추가하는 데 신경 쓰지 않을 것이라고 생각합니다. 나는이 기능이 때때로 편리 할 수도 있다고 생각한다. – Arun