如何获取R包大小及已加载包内存占用?加载包与自定义函数抉择
获取R包大小与已加载包内存占用的方法
刚好之前也纠结过类似的问题,分享两个实用的方法给你:
一、获取已安装R包的磁盘大小(无需查看目录)
不用手动翻文件目录,R自带的工具包就能搞定:
- 精准获取实际磁盘占用:用
tools::package_size(),它会计算指定包在磁盘上的真实占用空间(包括所有关联的帮助文档、数据文件等),返回值单位是字节,转成MB更直观:# 查看dplyr包的大小 dplyr_size <- as.numeric(tools::package_size("dplyr")) / (1024^2) cat("dplyr包实际磁盘大小:", round(dplyr_size, 2), "MB\n") - 批量查看所有已安装包:结合
installed.packages()可以快速统计所有包的大小,不过要注意这里的Size字段是包在CRAN上的压缩包大小,和实际安装后的占用有差异:# 获取所有已安装包的大小(单位KB),转成MB并排序 pkg_sizes_mb <- installed.packages(fields = "Size")[, "Size"] / 1024 sort(pkg_sizes_mb, decreasing = TRUE)[1:10] # 显示前10大的包
二、查看已加载/附加包的内存占用
当包被加载到工作区后,会占用内存,两种方法可以查看:
方法1:基础R函数手动统计
无需额外安装包,通过遍历包的环境来计算:
# 获取所有已加载的包(以package:开头的环境) loaded_pkgs <- grep("^package:", search(), value = TRUE) # 计算每个包的内存占用(转成MB) pkg_mem <- sapply(loaded_pkgs, function(pkg) { # 列出包内所有对象并累加大小 total_size <- sum(sapply(ls(pos = pkg), function(obj) { object.size(get(obj, pos = pkg)) })) total_size / (1024^2) }) # 按内存占用从大到小排序输出 sort(pkg_mem, decreasing = TRUE)
方法2:用pryr包快速可视化
pryr是专门做内存分析的工具包,用它能更简洁地查看:
# 首次使用先安装 install.packages("pryr") library(pryr) # 直接输出所有已加载对象(包括包)的内存占用 mem_usage()
这个函数会返回一个清晰的列表,不仅包含每个包的内存占用,还会列出工作区里的其他对象,非常直观。
内容的提问来源于stack exchange,提问作者zjzjzj




