Размеры целочисленных векторов в R

Я думал, что у R есть стандартные накладные расходы на хранение объектов (кажется, 24 байта, по крайней мере, для целочисленных векторов), но простой тест показал, что это сложнее, чем я думал. Например, взяв целочисленные векторы длиной до 100 (с использованием случайной выборки, надеясь избежать каких-либо хитрых уловок сжатия последовательностей, которые могут быть там ), я обнаружил, что векторы разной длины могут иметь одинаковый размер, как показано ниже. :

> N   = 100
> V   = vector(length = 100)
> for(L in 1:N){
+     z = sample(N, L, replace = TRUE)
+     V[L]    = object.size(z)
+ }
> 
> options('width'=88)
> V
  [1]  48  48  56  56  72  72  72  72  88  88  88  88 104 104 104 104 168 168 168 168
 [21] 168 168 168 168 168 168 168 168 168 168 168 168 176 176 184 184 192 192 200 200
 [41] 208 208 216 216 224 224 232 232 240 240 248 248 256 256 264 264 272 272 280 280
 [61] 288 288 296 296 304 304 312 312 320 320 328 328 336 336 344 344 352 352 360 360
 [81] 368 368 376 376 384 384 392 392 400 400 408 408 416 416 424 424 432 432 440 440

Я очень впечатлен отображаемыми значениями 152 (наблюдение: 152 = 128 + 24, хотя 280 = 256 + 24 не так заметно). Может кто-нибудь объяснить, как возникают эти распределения? Я не смог найти четкого определения в документации, хотя появляются V-ячейки.

9
задан Community 23 May 2017 в 11:45
поделиться