LoginSignup
5
5

More than 5 years have passed since last update.

R で大きな数値を 100,000,000 のように書きたい #rstatsj

Last updated at Posted at 2013-12-11

前回の記事とは逆の話です。

Java にはアンダースコア数値リテラルという便利な書き方があります。

int MAX_LIMIT = 100_000_000;

この書き方は、大きな数値を書くときに桁数がわかりやすくなって便利です。

これを R でも再現できないかと思って下記の関数を作ってみました。

Num <- function(..., digits=3) {
  args <- rev(unlist(list(...)))
  result <- 0
  for(i in seq_along(args)) {
    result <- result + args[i] * 10^(digits*(i-1))
  }
  result
}

使い方は下記の通りです。

kMaxLimit <- Num(100,000,000)
print(as.integer(kMaxLimit))
結果
[1] 100000000

追記

ゴミ箱さま(@kos59125)によると次の書き方が速いらしい。

Num <- function(..., digit=3) {
  args <- unlist(list(...))
  result <- 0
  d <- 10 ^ digit
  for(arg in args) {
    result <- result * d + arg
  }
  result
}

コメントにありますが、一行で書けるらしい。すごい。

Num <- function(..., digits=3) drop(unlist(list(...)) %*% (10^(digits*((length(list(...)):1)-1))))
5
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5