थोड़ा ऋणात्मक संख्याओं के लिए खाते संस्करण संशोधित:
f2si<-function (number, rounding=F, digits=ifelse(rounding, NA, 6))
{
mysign <- ""
if (number<0) {
mysign <- "-"
}
number <- abs(number)
lut <- c(1e-24, 1e-21, 1e-18, 1e-15, 1e-12, 1e-09, 1e-06,
0.001, 1, 1000, 1e+06, 1e+09, 1e+12, 1e+15, 1e+18, 1e+21,
1e+24, 1e+27)
pre <- c("y", "z", "a", "f", "p", "n", "u", "m", "", "k",
"M", "G", "T", "P", "E", "Z", "Y", NA)
ix <- findInterval(number, lut)
if (ix>0 && ix<length(lut) && lut[ix]!=1) {
if (rounding==T && !is.numeric(digits)) {
sistring <- paste(mysign,mysign,round(number/lut[ix]), pre[ix])
}
else if (rounding == T || is.numeric(digits)) {
sistring <- paste(mysign,signif(number/lut[ix], digits), pre[ix],sep="")
}
else {
sistring <- paste(mysign,number/lut[ix], pre[ix],sep="")
}
} else {
sistring <- paste(mysign,as.character(number),sep="")
}
return(sistring)
}
'utils ::: print.object_size' कुछ द्विआधारी इकाइयों – James
के लिए यह लागू करता है मैं सिर्फ यह w/ओ प्रूफरीडिंग करने के बारे में सावधान रहना होगा। उदाहरण के लिए, आईएसओ द्वारा 3.5 एमएम जैसी चीजों की अनुमति है, मानक उपयोग में सभी 3.5e3 किमी के साथ जाते हैं। चूंकि कोई भी आयामी मानों के लिए उपसर्ग का उपयोग नहीं करता है, इसलिए आप भौतिक इकाइयों को स्वयं कैसे जोड़ना चाहते हैं? –
मैं आपका पॉइंट देखता हूं। हालांकि मैं जो कर रहा हूं वह "गंभीर" नहीं है और मेरे पास कोई इकाई नहीं है। मैं सिर्फ एक साजिश/तालिका में मूल्य प्रदर्शित कर रहा हूं और मुझे इसे 3/4 वर्णों में फिट करने की आवश्यकता है। 10k 1000 या 1e + 03 से अधिक कॉम्पैक्ट है। – mb14