n 개의 데이터 테이블 (또는 데이터 프레임)을 결합하는 메모리 효율적인 방법이 있는지 궁금합니다. 나는 다음과 같은 4 data.tables이있는 경우 예를 들어, :2 개 이상의 데이터 테이블을 효율적으로 결합하십시오.
merge(df1,merge(df2,merge(df3,df4)))
을하지만이 최적의 솔루션이 아닌 것 같아 :
df1 = data.table(group = c(1L,2L,3L),value = rnorm(3),key = "group")
df2 = data.table(group = c(2L,1L,3L),value2 = rnorm(3),key = "group")
df3 = data.table(group = c(3L,2L,1L),value3 = rnorm(3),key = "group")
df4 = data.table(group = c(1L,3L,2L),value4 = rnorm(3),key = "group")
나는과 같이 병합 할 수 있습니다. 잠재적으로 병합해야 할 많은 데이터 테이블이있을 수 있습니다. 각 연속 병합을 메모리에 복사하지 않고 위의 내용을 일반화하는 방법이 있습니까? 이 작업을 수행하기 위해 이미 data.table 외부에 허용 된 방법이 있습니까?
하나의 솔루션은 다음을 병합()'감소 '사용 목록에있는 데이터의 모든 프레임을 넣어하는 것입니다. http://stackoverflow.com/questions/8091303/simultaneously-merge-multiple-data-frames-in-a-list – ulfelder
'Reduce (function (x, y) x [y], list (df1, df2, df3) , df4))'는 당신이 제공 한 데이터에서 조금 더 빠른 것 같지만, 규모가 큰 것을보기 위해서 더 큰 입력에서 이것을 테스트 해봐야 할 것입니다. – nrussell
@ulfelder 그건 단지 의미 론적 설탕입니다. 동일한 병합 작업이 수행됩니다. –