I've been using the pryr library to report memory usage of objects.
Generally I need to collect both the raw numeric value in bytes, and also a "human readable" string of the size.
This used to work for me:
# Size of an object utilizing builtin R function
obj_size <- object.size(my_obj)
obj_size_raw <- as.numeric(obj_size) # 7806621952
obj_size_str <- format(obj_size, "auto") # '7.3 GiB'
# Size of an object using pryr
obj_size <- pryr::object_size(my_obj)
obj_size_raw <- as.numeric(obj_size) # 7806620144
obj_size_str <- capture.output(obj_size) # '7,806,620,144 B'
# Total memory utilized using pryr
total_size <- pryr::mem_used()
total_size_raw <- as.numeric(total_size) # 8985272040
total_size_str <- capture.output(total_size) # '8.99 GB'
I'm not sure exactly since when or from which version, but the capture.output for the pryr's object size stopped returning human readable strings. For example, instead of returning 7.3 GiB, it returns now 7,806,620,144 B.
I've read in pryr's GitHub repository thath it was superseded by lobstr for the matters of object size comparison. So, I see that it has lobstr::obj_size() and lobstr::mem_used() functions, both returning an object of the class lobstr_bytes. I tried using capture.output, and format()base functions to create a "human readable" string from the lobstr_bytes objects, but it did not work.
What is the best way to create a "human readable" string for the lobstr_bytes objects?