Это сложная тема.Вы должны начать с чтения о NAMED механизме .
Если вы запустите следующее, вы увидите, что нет копии элементов списка (поскольку списки в основном являются указателями на их элементы):
> a <- list(1, 2, 3, 4, 5)
>
> b <- a[1:2]
> .Internal(inspect(b))
@0x000000001327e5b8 19 VECSXP g0c2 [NAM(3)] (len=2, tl=0)
@0x00000000136f6b60 14 REALSXP g0c1 [NAM(3)] (len=1, tl=0) 1
@0x00000000136f6b28 14 REALSXP g0c1 [NAM(3)] (len=1, tl=0) 2
>
>
> c <- a[1:2]
> .Internal(inspect(c))
@0x000000001327e678 19 VECSXP g0c2 [NAM(3)] (len=2, tl=0)
@0x00000000136f6b60 14 REALSXP g0c1 [NAM(3)] (len=1, tl=0) 1
@0x00000000136f6b28 14 REALSXP g0c1 [NAM(3)] (len=1, tl=0) 2
>
> b[1] <- 6
> .Internal(inspect(b))
@0x000000001327e6f8 19 VECSXP g0c2 [NAM(1)] (len=2, tl=0)
@0x0000000013745b58 14 REALSXP g0c1 [] (len=1, tl=0) 6
@0x00000000136f6b28 14 REALSXP g0c1 [NAM(3)] (len=1, tl=0) 2
>
> .Internal(inspect(c))
@0x000000001327e678 19 VECSXP g0c2 [NAM(3)] (len=2, tl=0)
@0x00000000136f6b60 14 REALSXP g0c1 [NAM(3)] (len=1, tl=0) 1
@0x00000000136f6b28 14 REALSXP g0c1 [NAM(3)] (len=1, tl=0) 2
В случае подмножества векторов это не так.
Возможно, вас также заинтересует новый механизм подсчета ссылок 1011 *.