2012-01-18 1 views
4

나는 data.table 패키지를 사용하고 있습니다. 벡터 스캔보다 훨씬 빠른 바이너리 검색을 사용하여 하위 집합이나 쿼리 또는 검색 (또는 원하는대로 호출)에 대한 예제가 많이 있습니다. 다음은 도움말 파일의 발췌 부분입니다.R에서 data.table을 사용하면 기준 필드가 정수일 때 하위 세트 또는 쿼리가 어떻게하나요?

DT["a"]     # binary search (fast) 
DT[x=="a"]     # vector scan (slow) 

하지만 검색하려는 열이 요인 (또는 문자)이 아니고 정수입니다. 정수 만이 data.table에 존재하지 않는 1만번째 행으로 해석되기 때문에 작동하지 않습니다

cpt <- c(23456,23456,10000,44555,44555) 
description <- c("tonsillectomy","tonsillectomy in >12 year old","brain transplant","castration","orchidectomy") 
cpt.desc <- data.table(cpt,description) 

setkey(cpt.desc,cpt) 
cpt.desc[10000,] 

.

우리가 구문을 수정하면 우리가 찾고있는 것을 얻게됩니다.

cpt.desc[cpt==10000,] 

그러나 느린 벡터 스캔 방법 인 것처럼 보입니다. data.table 패키지에 정수에 대한 바이너리 검색 기능이 있습니까? 당신의 도움을 기대해 주셔서 감사합니다.

답변

4

시도 cpt.desc[J(10000)] 모든 일치 항목을 얻으려면 ,"mult=all"을 추가하십시오.

+0

왜 -1500인지, 그것은 10000과 완벽하게 작동합니다. 'cpt.desc [J (10000)]'은 마술입니다. 고맙습니다. – Farrel

+0

하하 죄송합니다. 내 자체 데이터 세트를 테스트 중이었고 그 값을 찾고있었습니다. 귀하의 예와 일치하도록 수정하겠습니다. – frankc

+0

Nice. mult = all에 대한 비트를 포함 해 주셔서 감사합니다. –

관련 문제