2012-06-06 10 views
6

में बाइट्स वहाँ आर में एक मानक समारोह में इस तरह केपरिवर्तित किलोबाइट, मेगाबाइट आदि आर

  • 11855276K
  • 113M
  • के रूप में बाइट्स की संख्या का प्रतिनिधित्व तार कन्वर्ट करने के लिए है 2.40G
बाइट्स की पूर्णांक संख्याओं के लिए

?

मैं पैकेज gdata में humanReadable पर आया, लेकिन यह रूपांतरण दूसरे तरीके से बदलता है। मुझे पता है कि मैं स्ट्रिंग को पार्स कर सकता हूं और फिर खुद गणित कर सकता हूं, लेकिन मुझे आश्चर्य हुआ कि कुछ पहले से मौजूद है या नहीं।

उत्तर

5

एक साधारण समारोह ऐसा करने के लिए:

x <- c("11855276K", "113M", "2.40G", "1234") 

convb <- function(x){ 
    ptn <- "(\\d*(.\\d+)*)(.*)" 
    num <- as.numeric(sub(ptn, "\\1", x)) 
    unit <- sub(ptn, "\\3", x)    
    unit[unit==""] <- "1" 

    mult <- c("1"=1, "K"=1024, "M"=1024^2, "G"=1024^3) 
    num * unname(mult[unit]) 
} 

convb(x) 
[1] 12139802624 118489088 2576980378  1234 

आप अतिरिक्त इकाइयों और रूपांतरण, उदा जोड़ सकते हैं टेराबाइट्स।

+0

ठीक है, यह पार्सिंग-द-स्ट्रिंग-फिर-कर-द-गणित-स्वयं दृष्टिकोण है। मेरा सवाल वास्तव में था कि एक सीआरएएन पैकेज में मौजूदा कार्य है या नहीं। – loris

+0

@loris http://left-pad.io/ –