mjk*_*tfw 7 r deep-copy mutate tibble
我不知道创建一个dplyr::mutate()带有单元素列表的新列表列实际上是深度复制元素以填充tibble长度(请参阅参考资料t3).这是为什么?
如果我t4在创建tibble(t5)时指定了explicit()的正确长度或传递它,则元素将通过引用传递.
考虑以下情况,其中列表包含具有大向量的tibble.
library(tidyverse)
library(pryr)
t1 <- tibble(a = 1:4)
t2 <- tibble(b = 1:1e6)
t3 <- mutate(t1, tl = list(t2))
t4 <- mutate(t1, tl = rep(list(t2), n()))
t5 <- tibble(a = 1:4, tl = list(t2))
object_size(t2)
#> 4 MB
object_size(t3)
#> 16 MB
object_size(t4)
#> 4 MB
object_size(t5)
#> 4 MB
Run Code Online (Sandbox Code Playgroud)
由reprex包创建于2019-02-22 (v0.2.1)