我希望在stackoverflow上已经有了这个答案,我根本找不到它。
期望的结果:快速将file.info()
调用中的文件大小元素从字节转换为KB,MB等。如果输出是i)字符串,我很好具有所需的大小类型,例如"96 bytes"
或ii)简单的数字转换,例如,从60963
字节到60.963
KB(每Google)。
Repro步骤:
创建一个文件夹来存储文件:
dir.create("census-app/data")
下载文件(约60KB):
download.file("http://shiny.rstudio.com/tutorial/lesson5/census-app/data/counties.rds",
"census-app/data/counties.rds")
使用file.info()$size
以字节为单位返回文件大小:
file.info("census-app//data//counties.rds")$size
[1] 60963
从那里,我被卡住了。我意识到我可以做一些复杂/手动的解析和计算来进行转换(参见Converting kilobytes, megabytes etc. to bytes in R)。
但是,我希望我可以简单地使用基本功能或类似的东西:
format(file.info("census-app//data//counties.rds")$size, units = "KB")
[1] "60963"
# Attempt to return file size in KB simply returns the size in bytes
# NOTE: format(x, units = "KB") works fine when I
# pass it object.size() for an object loaded in R
答案 0 :(得分:31)
object.size()
函数为其结果执行此类格式化,但它的目的是告诉您传递给它的R对象的大小。它没有设置为任意值。
但是,我们可以“窃取”它的一些格式化逻辑。你可以用
来调用它utils:::format.object_size(60963, "auto")
# [1] "59.5 Kb"
通过这种方式,我们可以调用未导出的格式化函数。您可以在?format.object_size
帮助页面上显示其他格式选项。请注意,它使用1 Kb = 1024字节的规则(在您的示例中不是1000)。