Мне кажется, что вы пытаетесь создать 17e6 x 2000 data.frame, что совершенно неразумно (так как в каждой строке будет только одно значение).
Если ваши значения целочисленные, то результирующееdata.frame будет иметь размер:
v <- sample.int(17e6)
format(object.size(v) * 2000, units = 'Gb')
# [1] "126.7 Gb"
или double:
v <- rnorm(17e6)
format(object.size(v) * 2000, units = 'Gb')
# [1] "253.3 Gb"
Возможно, вам следует изучить разреженные матрицы или переосмыслить то, что вы делаете.
Контрольный пример для 200k x 2000 с data.table:
N <- 200000
n <- 2000
require(data.table)
dt <- data.table(parameter_name = sample.int(n, N, T), value = rnorm(N), id = 1:N)
r <- dcast(dt, id ~ parameter_name)
format(object.size(r), units = 'Gb')
# [1] "3 Gb"
Результаты уже в 3 ГБ.