Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pryr:使用cat调用对象大小_R - Fatal编程技术网

pryr:使用cat调用对象大小

pryr:使用cat调用对象大小,r,R,在包pryr()中,函数object_size返回对象的大小。例如,对象大小(1:1E8)返回400 MB。它使用适当的单位(B、KB、MB、GB等)返回值。但是,当使用cat调用时,它只返回以字节为单位的值。cat(对象大小(1:1E8))返回4e+08。当使用cat调用时,如何使用原始格式(B、KB、MB…)使其返回?通常,我会显示使用cat(“mydb”,dim(mydb),“\n”)创建/导入的数据帧的信息。我想增加对象的大小。谢谢。你可以试试 cat(capture.output(ob

在包pryr()中,函数object_size返回对象的大小。例如,对象大小(1:1E8)返回400 MB。它使用适当的单位(B、KB、MB、GB等)返回值。但是,当使用cat调用时,它只返回以字节为单位的值。cat(对象大小(1:1E8))返回4e+08。当使用cat调用时,如何使用原始格式(B、KB、MB…)使其返回?通常,我会显示使用cat(“mydb”,dim(mydb),“\n”)创建/导入的数据帧的信息。我想增加对象的大小。谢谢。

你可以试试

cat(capture.output(object_size(1:1e8)))

这是因为
cat
不将
print
的格式应用于其参数。

object\u size
返回“bytes”类的对象。我本以为您可能会成功使用print(),但不是。与大多数print方法不同,
pryr:::print.bytes
实际上不返回其参数,而是通过使用cat()将字符串输出到控制台的副作用工作,并返回NULL对象。我不知道为什么会做出这样的选择,但您可以重新定义
print.bytes

pryr:::print.bytes   # to get the code
print.bytes <- 
function (x, digits = 3, ...) 
{
    power <- min(floor(log(abs(x), 1000)), 4)
    if (power < 1) {
        unit <- "B"
    }
    else {
        unit <- c("kB", "MB", "GB", "TB")[[power]]
        x <- x/(1000^power)
    }
    formatted <- format(signif(x, digits = digits), big.mark = ",", 
        scientific = FALSE)
    paste0(formatted, " ", unit, "\n", sep = "") # return character-object
}
pryr:::print.bytes#获取代码
打印字节数