基数変換には色々やり方があると思いますが、そのうちの一つとして。
> a <- 10 > str(a) num 10 > class(a) [1] "numeric" > class(a) <- "hexmode" > a [1] "a" > str(a) Class 'hexmode' num 10 > class(a) <- "octmode" > a [1] "12" > str(a) Class 'octmode' num 10
クラスを変えると、内部データは同じなのに表現形が変わる(Rでどういうのか分かりませんが)というのは面白い。sprintfでもいいんですが、sprintfすると文字列に変換されてしまって、数値計算には使えなくなってしまうところは注意。
> class(a) <- "hexmode" > a [1] "a" > b <- sprintf("%x", a) > b [1] "a" > a * 10 [1] "64" > b * 10 以下にエラー b * 10 : 二項演算子の引数が数値ではありません
うーん。まあ、bもそのまま使えないことはなくて
> as.numeric(paste("0x", b, sep="")) * 10 [1] 100
とか。めんどくさいけど。