2012-06-06 4 views
6

Gibt es eine Standardfunktion in R-Strings zu konvertieren Anzahl von Bytes repräsentiert, wieConverting Kilobyte, Megabyte usw. auf Bytes in R

  • 11855276K
  • 113M
  • 2,40 g

zu ganzen Zahlen von Bytes?

Ich bin im Paket gdata auf humanReadable gestoßen, aber das macht die Konvertierung umgekehrt. Ich weiß, dass ich die Saite parsen kann und dann selbst die Mathematik mache, aber ich habe mich gefragt, ob schon etwas existiert.

Antwort

5

Eine einfache Funktion, dies zu tun:

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 

Möglicherweise möchten Sie zusätzliche Einheiten und Umrechnungen hinzufügen, zum Beispiel Terabyte.

+0

OK, das ist die Parsing-the-String-then-the-Mathe-selbst Ansatz. Meine Frage war wirklich, ob es eine existierende Funktion in einem CRAN-Paket gibt. – loris

+0

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