R中有一个方法(可能是近似的)估计write.csv
文件(或其他导出命令,例如dev.copy2pdf
)的文件大小吗?
答案 0 :(得分:3)
我还没有听说过类似的东西,但这里至少有一个估算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文件之间观察到的关系的数量级感,请尝试以下方法。 (作为+/-代表性示例,我在此处检查数据集包中提供的所有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")