UPDATE : 오래된 질문 ...이 2 월 data.table v1.5.3에 의해 해결 된 2011 년R : data.table을 사용할 때 x [y]를 할 때 y의 열을 얻는 방법은 무엇입니까?
, 나는 data.table
패키지를 사용하려고하고, 정말 속도 향상처럼 내가 얻고 있지만, 나는 내가 x[y, <expr>]
곳 x
및 y
가 같은 키 "데이터 테이블"입니다 수행이 오류로 난처한 상황에 빠진, 그리고 <expr>
모두 x
및 y
의 열 이름을 포함하고있다 :
require(data.table)
x <- data.table(foo = 1:5, a = 5:1)
y <- data.table(foo = 1:5, boo = 10:14)
setkey(x, foo)
setkey(y, foo)
> x[y, foo*boo]
Error in eval(expr, envir, enclos) : object 'boo' not found
UPDA TE ... 내가 위의 예에서 찾고 있어요 기능을 명확히하기 위해 : 그러나 data.table
자주 묻는 질문에서 아래의 추출물에 따라
with(merge(x,y), foo*boo)
이,이 일을해야 : 나는 다음에 해당 할 필요 :
마지막으로, x는 [Y]를 Y에 열을 반환하지 않습니다하지만, 실제로 J 발현에 Y로부터 열을 사용할 수 있습니다로 나타납니다 있지만. 이것은 우리가 에서 조인 한 계승 범위를 의미합니다. 왜 x와 y에서 모든 열의 합집합을 반환하고 그 다음에 식을 실행합니까? 프로그램의 코드는 이고 프로그래밍은 입니다. x [y, foo boo]라고 쓰면 data.table이 자동으로 은 j 표현식을 검사하여 어떤 열을 사용하는지 확인합니다. 서브 세트는 이거나 그 컬럼 만 그룹화합니다. 메모리 은 j 이 사용하는 열에 대해서만 만들어집니다. foo가 x이고 boo 이 y에 있다고 가정 해 봅시다 (다른 20 개의 열 y와 함께). x [y, foo boo]가 프로그램에 더 빠르며 병합 단계와 다른 하위 집합 단계가 뒤 따르는 것이 더 빠릅니까?
나는 비슷한 문제를 해결했지만 this question을 알고 있지만 만족스럽게 해결되지 않은 것 같습니다. 누구든지 제가 누락되거나 오해 한 것을 압니까? 감사.
업데이트 : 데이터 테이블 도움말 메일 링리스트와 패키지 작성자 (Matthew Dowle) replied에 위의 FAQ를 잘못 입력했기 때문에 현재 사용하고있는 구문이 작동하지 않습니다. 즉 참조 할 수 없습니다. x[y,...]
일 때 j
(즉 두 번째) 인수의 y
열.
하지만 얼마 전 물어 보니 2011 년 2 월 CRAN에 v1.5.3이 릴리스되었습니다. NEWS, new? data.table 및 FAQ를 참조하십시오. –
@Matthew, 네, 고맙습니다. 최신 릴리스에서 해결 된 사실을 알고 있습니다. 귀하가 여기서 지적 했으니 다행입니다. 그래서 다른 사람들에게는 분명합니다. –