或者同样不需要fs这里(如果您使用的是正确的操作系统):
> system(paste("du -sh", system.file(package="dplyr"), "| awk '{print $1}'"), intern=TRUE)
[1] "2.1M"
>
Run Code Online (Sandbox Code Playgroud)
因为
$ du -sh /usr/local/lib/R/site-library/dplyr
2.1M /usr/local/lib/R/site-library/dplyr
$
Run Code Online (Sandbox Code Playgroud)
.libPaths()[1]例如,很容易概括地查看 中的所有条目。
编辑:但是由于问题是关于整个目录的,所以我们也尝试一下。观察du --help让我了解-d 1 我们想要什么。然后:
> res <- read.table(pipe("du -d 1 /usr/local/lib/R/site-library/"), col.names=c("size", "name"))
!> head(res)
size name
1 15376 /usr/local/lib/R/site-library/StanHeaders
2 540 /usr/local/lib/R/site-library/restfulr
3 1028 /usr/local/lib/R/site-library/mlr3learners
4 1360 /usr/local/lib/R/site-library/ndjson
5 3920 /usr/local/lib/R/site-library/viridis
6 300 /usr/local/lib/R/site-library/sessioninfo
>
Run Code Online (Sandbox Code Playgroud)
显然,这可以通过修改固定路径来获取路径.libPaths()[1]并编辑列名称。gsub()但 git 就在那里,通过不指定“人类可读”的漂亮大小,我们也可以轻松排序和计算:
> head(res[order(-res$size), ])
size name
1030 2964632 /usr/local/lib/R/site-library/
137 322800 /usr/local/lib/R/site-library/covid19.model.sa2
187 276324 /usr/local/lib/R/site-library/stxBrain.SeuratData
971 153532 /usr/local/lib/R/site-library/BH
691 95368 /usr/local/lib/R/site-library/rstan
940 85972 /usr/local/lib/R/site-library/GO.db
>
Run Code Online (Sandbox Code Playgroud)
编辑 2为了好玩,这里是一个根据需要.libPaths()聚合所有目录 的循环。
res <- do.call(rbind, lapply(.libPaths(), \
function(d) read.table(pipe(paste("du -d 1", d)), \
col.names=c("size", "name"))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
630 次 |
| 最近记录: |