我想在R中操作、存储和检索嵌套数据,但令我惊讶的是,嵌套数据框架的大小有了大幅度的增加:
pacman::p_load(dplyr, tidytable)
test3 <- tibble(ID = 1:1e5) %>%
group_by(ID) %>%
summarise(number = 1:sample(1:4, size = 1), .groups = "drop") %>%
mutate(Date = sample(seq.Date(from = as.Date("2021-01-01"),
to = as.Date("2021-12-31"), by = 1),
size = n(), replace = TRUE))
test4 <- test3 %>% nest_by(ID)
prettyNum(object.size(test3), big.mark = ",") 4 MB
prettyNum(object.size(test4), big.mark = ",") 132 MBtidytable也存在同样的问题。
数据嵌套是一个很酷的想法,因为如果数据不是二维的,它有助于控制数据复制的问题。
但是内存的增加是有问题的。
此外,如果有嵌套列,write_fst拒绝写入数据,所以这里可能也需要一个不同的解决方案。
你有什么意见建议?
发布于 2022-01-27 23:49:32
简单的答案是不要嵌套数据。
可以有效地存储和检索数字数组,因为它们彼此接近,但是嵌套的数据在内存中传播,数据帧需要每个观察的地址来访问它们并检索值。换句话说,数字数组是单个对象,嵌套值数组是一个集合(在您的例子中是10^5)小对象。
https://stackoverflow.com/questions/70878796
复制相似问题