2013-05-21 2 views
1

나는 시세, 날짜 및 가격이라는 3 개의 열을 갖는 prices라는 데이터 테이블을 가지고 있습니다. 내가 코드에서이 작업을 수행 할 경우 내가data.table을 쿼리하는 함수

setkey(prices,ticker,date) 

를 실행 한, 내가이 기능을 작성하는 경우

prices[list("MSFT",as.Date("2013-01-15")] 

는, 그러나 2013년 1월 15일 에 MSFT 만 행을 반환 작동

getPrice <- function(ticker,date) { 
    prices[list(ticker,date)] 
} 

전체 데이터를 반환합니다. 나는 그것이 i 매개 변수의 범위 지정과 관련이 있다고 의심하지만 작동시키지 못합니다. 미리 매개 변수를 모르는 경우 어떻게 data.table을 쿼리합니까?

+0

만 사용 장난감 예제는 나를 위해 잘 작동합니다. – Justin

답변

3

문제는 함수의 변수 이름입니다. 그들을 예 : xy (따라서 해당 열 이름은 data.table의 열 이름과 같지 않습니다.) 모든 것이 작동합니다. 현재 수행중인 작업은 tickerdate 열을 모두 포함하는 data.table을 만든 다음이를 결합하여 원본 데이터를 복구하는 것입니다.

또 다른 (더 강력한) 옵션은 기능이 같은 떨어지게하는 것입니다 :이에 대한 자세한 내용은

getPrice <- function(ticker,date) { 
    tmp = list(ticker, date) 
    prices[tmp] 
} 

참조 자주 묻는 질문 2.12와 2.13 - 내가 확신 할 수 없습니다 데이터없이 http://datatable.r-forge.r-project.org/datatable-faq.pdf

+0

계획에 대한 언급이있었습니다 ([1.8.2 버전의 NEWS에서] (https://r-forge.r-project.org/scm/viewvc.php/pkg/NEWS?view=markup&root=datatable)) ..() 구문을 추가하여.() 및 ..()가 파일 시스템의 ./ 및 ../; 즉,.()는 DT의 프레임 내에서 평가하고 부모 범위에서 ..()를 평가합니다. – mnel

관련 문제