Ответ 1
Чтобы отслеживать мои комментарии, используйте data.table
. Я привел пример, соответствующий вашим данным, чтобы проиллюстрировать:
library(data.table)
dt1 <- data.table(id = 1:908450, matrix(rnorm(908450*32), ncol = 32))
dt2 <- data.table(id = 1:908450, rnorm(908450))
#set keys
setkey(dt1, id)
setkey(dt2, id)
#check dims
> dim(dt1)
[1] 908450 33
> dim(dt2)
[1] 908450 2
#merge together and check system time:
> system.time(dt3 <- dt1[dt2])
user system elapsed
0.43 0.03 0.47
Таким образом, для слияния потребовалось меньше 1/2 секунды. Я взял до и после скриншота, наблюдая за моей памятью. Перед слиянием я использовал 3,4 гигабайта. Когда я слился вместе, он прыгнул до 3.7 и выровнялся. Я думаю, вам будет трудно найти что-то большее, чем память или время, более эффективное.
До:
После: