r - write.csv 后预测文件大小

标签 r filesize

R 中是否有一种方法可以(大概)估计 write.csv 文件(或其他导出命令,例如 dev.copy2pdf)的文件大小?

最佳答案

我还没有听说过类似的东西,但至少这里有一个估计 csv 大小的想法。

csvSizeEst <- function(obj, frac=0.01) {
    tf <- tempfile()
    on.exit(unlink(tf))
    n <- ceiling(nrow(obj) * frac)
    write.csv(obj[seq_len(n),], file=tf)
    1/frac * file.info(tf)$size
}

x <- data.frame(replicate(5, rnorm(500)))

## Estimated file size, based on a 1% sample (the default sample size)
csvSizeEst(x)
# [1] 50700

## Set fraction of file to 1 to get actual file size
csvSizeEst(x, frac=1)
# [1] 48904

此外,为了对 R 中的 data.frame 大小(由 object.size 报告)和写成 .csv 文件时观察到的关系有一个数量级的感觉,请尝试以下操作. (作为 +/- 代表性样本,我在这里检查了 datasets 包中提供的所有 data.frames。)

oo <- ls("package:datasets")
dfs <- oo[sapply(oo, function(X) is.data.frame(get(X)))]
r <- sapply(dfs, function(X) {
         X <- get(X)
         csvSizeEst(X,1)/object.size(X)
     })
hist(r, breaks=20, col="lightgrey", xlim=c(0,1.5),
     main="Ratio of size-on-disk to object.size in R")

enter image description here

关于r - write.csv 后预测文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16847415/

相关文章:

c - 以编程方式提前确定文件 "size on disk"

r - 堆叠两列

r - 根据 R 中的条件创建重复行

r - 在同一个 Shiny 的应用程序中使用 shinyjs 和 ggplot2::autoplot

upload - MAMP 无法增加 phpmyadmin 上传限制

android - 较小的 APK 大小和较大的 Assets ?

ios - App Store 是否会从 IPA 中删除架构?

r - 如何在情节的标题内使用箭头?

r - 将输入值保存在 csv 文件中,在每次提交时添加一行, Shiny

PHP 文件大小 MB/KB 转换