我打算在数据帧列表上执行排列测试,但我担心在某些时候会耗尽内存。假设我有以下玩具示例:
f <- function(x) {
some_intermediate_value <- mean(x)
to_be_returned_value <- some_intermediate_value^2
return(to_be_returned_value)
}
out <- lapply(list_of_objects, f)
假设list_of_objects很长。 R会运行更长时间,R会使用越来越多的内存吗?换句话说,函数f
不断创建变量(some_intermediate_value
和to_be_returned_value
)这一事实会使内存在某些时候耗尽,或者R的内存管理是否会照顾到此?
答案 0 :(得分:2)
查看@ hadley的pryr包,我相信它显示内存使用量将保持不变,
# install.packages('pryr')
library(pryr)
f <- function(x) {
some_intermediate_value <- mean(x)
to_be_returned_value <- some_intermediate_value^2
print(pryr::mem_used())
return(to_be_returned_value)
}
out <- lapply(
# large list ~ 669MB
list(x1 = rnorm(1e7),
x2 = rnorm(1e7),
x3 = rnorm(1e7),
x4 = rnorm(1e7)),
FUN = f)
669 MB
669 MB
669 MB
669 MB