統計ソフトRについての質問です。10進法を2進法に変換する関数はないでしょうか? PHP の decbin と同じ機能をもったものです。

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2011/04/20 20:27:57
  • 終了:2011/04/22 08:13:05

ベストアンサー

id:karuishi No.2

ニャンざぶろう回答回数764ベストアンサー獲得回数1282011/04/22 01:53:40

ポイント100pt

Package ‘oro.dicom’に

dec2base "Convert Decimal to Base N Number in String" という関数がありますよ。

  

Examples: (x <- dec2base(23, 2))

 

http://cran.md.tsukuba.ac.jp/web/packages/oro.dicom/

id:isogaya

やっぱりあるんですね。ありがとうございました。

2011/04/22 07:12:10

その他の回答(1件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912011/04/21 00:37:08

ポイント20pt

あまりRに詳しくないのでもしかしたら標準であるかもしれませんが、

ユーザ定義関数として作ってみました。

decbin <- function(x) {
  y <- floor( log(x) / log(2) )
  r <- ""
  while( y>=0 ){
     if( x >= 2^y ) {
         x <- x - 2^y
         r<- paste(r, as.character(1), sep = "")
     } else {
         r<- paste(r, as.character(0), sep = "")
     }
     y <- y - 1
  }
  return(r)
}

>decbin(7)
[1] "111"

のようになります。


作成の参考にしたページです。

http://ofmind.net/doc/r-intro-lecture#CALL

http://www.okada.jp.org/RWiki/?R%A4%CE%B4%D8%BF%F4%C4%EA%B5%C1%A...

id:karuishi No.2

ニャンざぶろう回答回数764ベストアンサー獲得回数1282011/04/22 01:53:40ここでベストアンサー

ポイント100pt

Package ‘oro.dicom’に

dec2base "Convert Decimal to Base N Number in String" という関数がありますよ。

  

Examples: (x <- dec2base(23, 2))

 

http://cran.md.tsukuba.ac.jp/web/packages/oro.dicom/

id:isogaya

やっぱりあるんですね。ありがとうございました。

2011/04/22 07:12:10
  • id:karuishi
    y <- floor( log(x) / log(2) ) は、
    >decbin(0)
    でエラーになりますよね。
  • id:Mook
    さっと検索しても見つかりませんでしたが、やはりあるんですね。

    0 はこちらで試したら"" (空文字列)になりました。
    計算上、下の式は0になりますがエラーではないですね(期待するのは"0"だと思いますが)。
    y <- floor( log(x) / log(2) )

    正の整数しか対象としていないので、そういう意味では簡易的な関数です。
    ライブラリがあるのであれば、そちらを使用した方が良いでしょう。
  • id:Mook
    と思ってみてみたら名前が気になったのですが、やはり医療規格の DICOM ですか。

    あまり汎用向けのライブラリではないですね。
    やはり、汎用的なライブラリに無いから作ったのかな。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません