SlideShare uma empresa Scribd logo
1 de 23
Rが苦手な人に使って頂く
              ~RコマンダーとRookと私~



        2012/03/10
        Tokyo.R #21
          和田 計也
サイバー系
サイバー系


     はじめに



     ※この発表は個人の
     見解であり、所属す
     る組織の公式見解で
     はありません。

2012/03/10               1
サイバー系


     自己紹介

  和田 計也(@wdkz)
         静岡県袋井市出身



  サイバー系企業でデータマイニングエンジニア職
         創立記念日が3月18日
         社長の出身地が福井県鯖江市



  前職はバイオベンチャー
         バイオマーカ探索してた
         学生時代は枯草菌の研究




2012/03/10                          2
サイバー系


     アメーバピグで遊んでみた




                    http://pigg.ameba.jp
2012/03/10                                 3
サイバー系


     作ってみた
            holiday()関数




2012/03/10                         4
サイバー系


     問題提起

  Rはいろんなことができて素晴らしいですよ!
        休日もわかるよ!バースデー問題も秒殺!
        でも、「いいから使ってみて下さい」って言ってもな
         かなか使ってくれないよね
        コマンド?何それ?
 問題点
        GUIがない
        マウスでポチっとな~ができない
 解決策
        Rコマンダー
        Webアプリで作っちゃう

2012/03/10                              5
サイバー系


     Rコマンダー

 Rコマンダーとは?
            RのGUIの一つ
                R StudioとかRattleとか,,



 利点
            マウス使える


 インストール
            install.packages(“Rcmdr”)



 起動
            require(Rcmdr)




2012/03/10                                       6
サイバー系


     Rコマンダー使用例

      λ=3のポアソン分布ってどんな確率分布だったけ?



                 ①
                     ③


             ②




2012/03/10                                7
サイバー系


     Rコマンダーの圧倒的な利点

      カスタマイズできる!!




2012/03/10                   8
サイバー系


     Rコマンダーの圧倒的な利点

      先ほどのholiday()関数を使ってもらう


                          ①
              ②


               ③




2012/03/10                              9
サイバー系


     Rコマンダーのカスタマイズ方法

   メニューバーにメニューを追加
          Rcmdrインストールフォルダ→etc→Rcmdr-menus.txt
             (C:¥Users¥wada_kazuya¥Documents¥R¥win-library¥2.14¥Rcmdr)




        ★このテキストファイルをエディタで編集する
2012/03/10                                                                   10
サイバー系


     Rコマンダーのカスタマイズ方法

   Rcmdr-menus.txtに以下を追加
    Toolsメニューの下あたり(私の例では351行目の下)

     menu antibayMenu topMenu ""       ""           "" ""
     item antibayMenu command "休日チェキラ" tcl.holiday  "" ""
     item topMenu     cascade "あんちべ!"   antibayMenu "" ""



      3行目:トップメニューに「あんちべ!」文字列を追加してそれをantibayMeruと命名
      1行目:antibayMenuをトップメニューに追加
      2行目:antibayMenuに「休日チェキラ」という子メニューを追加して、
          それがクリックされたときにtcl.holiday関数が呼ばれるようにする




        ★勘のいい皆様ならなんとなくわかるでしょう
2012/03/10                                                      11
サイバー系


     Rコマンダーのカスタマイズ方法

   ユーザ入力部分のUI(ダイアログ)は適当に作る
   tcl.holiday <-function(){
    initializeDialog(title="休日チェキラ") #ダイアログのタイトル
    Var1 <- tclVar(substring(Sys.Date(),1,4)) #テキストボックスの初期値
    Var1Entry <- tkentry(top, width=“20”, textvariable=Var1)
    onOK <- function(){ #OKボタン押した時の挙動
      closeDialog() #閉じて
      XXX <- as.character(tclvalue(Var1)) #入力値を取得して
      command <- paste(“holiday(‘”, XXX, “’)”, sep=“”) #holiday関数呼ぶ
      doItAndPrint(command) #コマンド実行                    #文字列生成
      tkfocus(CommanderWindow()) #フォーカスを親に戻す
    }
    OKCancelHelp(helpSubject="+")
    tkgrid(tklabel(top, text=gettextRcmdr(“いつ?”)), Var1Entry,
   sticky=“e”) #テキストボックスの横のテキスト
    tkgrid(buttonsFrame, columnspan=2, sticky=“w”) #ボタン設置
    tkgrid.configure(Var1Entry, sticky="w") #?
   }


2012/03/10                                                            12
サイバー系


     Rコマンダーのカスタマイズ方法

   R-cmdr-menus.txtと同様に、関数定義ファイルもetcフ
    ァイルに突っ込んでおく
          Rcmdrインストールフォルダ→etc
             (C:¥Users¥wada_kazuya¥Documents¥R¥win-library¥2.14¥Rcmdr)




        ★etcフォルダに突っ込んでおけば、Rcmdr起動時に勝手にロードしてくれる
2012/03/10                                                                   13
サイバー系


     Rコマンダーのその他

   Rコマンダーの注意点
          Rcmdrのアップデートをしてしまうと、etcフォルダ内のフ
           ァイルが初期化(消去)されてしまうので努力が水の泡に


   Rコマンダーのカスタマイズ・他の方法
          Rのパッケージ作るようにコンパイル済みのものを作ること
           も可能。zipファイルを配布してRコマンダーからアドオンイ
           ンポートしてカスタマイズ化できるからユーザにとってはこ
           ちらのほうが嬉しい。
          参考文献
             http://www.okada.jp.org/RWiki/?RcmdrPlugin%C4%B6%C6%FE%CC%E7
             http://cwoweb2.bai.ne.jp/~jgb11101/files/R-commander.pdf




2012/03/10                                                                      14
つぎ




2012/03/10   15
サイバー系


     Webアプリ作っちゃう

   Rook使う
          Rは(おバカな)webサーバを内蔵しているんです!
          Hello World的なのやってみよう
             install.packages("Rook")
             require(Rook)
             s <- Rhttpd$new()
             s$start(quiet=TRUE)
             s$browse(1)




        ★webブラウザが起動して何やらそれっぽい雰囲気に
2012/03/10                                  16
サイバー系


     Webアプリ作った

   Rookで作った     source(“Rook.holiday.R”)
                 holiday.start()




        ★できた
2012/03/10                                      17
サイバー系


     RookでのWebアプリ作成方法・1

   ユーザ入力部分のUI(htmlのフォーム)は適当に作る
  Rook.holiday <- function(env) {
    source("holiday.R")
    req = Rook::Request$new(env)
    res = Rook::Response$new()
    res$write('いつ?:¥n')
    res$write('<form method="POST">¥n')
    res$write('<input type="text" name="xdim" value="2012">¥n')
    res$write('<input type="submit" name="Go", value="holiday">¥n</form>¥n<br>')
  #まだまだ続く




             入力formはhtmlで力業で書く




2012/03/10                                                                         18
サイバー系


     RookでのWebアプリ作成方法・2

   ユーザ入力部分のUI(htmlのフォーム)は適当に作る・続き
  #Rook.holiday関数の続き
    if (!is.null(req$POST())) {
             y <- req$POST()[["xdim"]] #テキストフォームの入力値を取得
             holidays <- holiday(y)        #holiday関数の結果を取得
             res$write("<p>")
             if(length(holidays)==1){
                        res$write(as.character(holidays))
                        }else if(is.matrix(holidays)){
                        for(i in 1:nrow(holidays)){
                           res$write(paste(as.character(holidays[i,1]), "<br>¥n", sep=""))
                        }
                        }else{
                        for(i in 1:nrow(holidays)){
                            res$write(paste(as.character(holidays[i,1]), " | ",
                                              as.character(holidays[i,2]), "<br>",sep=""))
                        }
             }
             res$write("</p>")
    }
    res$finish()
  }


                                                  結果もhtmlで力業で書く
2012/03/10                                                                                   19
サイバー系


     RookでのWebアプリ作成方法・3

   Webサーバ起動部分
  holiday.start <- function(){
            s <<- Rhttpd$new() #グローバル領域に変数を作成
             #前ページで定義したRook.holiday関数にholidayと名付けて
            s$add(app = Rook.holiday, name = “holiday”)
            s$start()
            s$browse(“holiday”) #Rook.holiday関数を呼び出す
  }




2012/03/10                                                    20
サイバー系


     デモ




2012/03/10       21
サイバー系


     最後に

    CUI嫌いな人にRを使ってもらうには...              (使いこなすわけではない)
              Rコマンダーを使って、GUIを用意してやる
              Rookを使って、Webアプリ作って提供する


    ただし注意も必要
              Rコマンダーカスタマイズを複数ユーザに設定するのはちょっと面
               倒。しかも、Rcmdrアップデートするといろいろ消える
              Rookで実運用は(たぶん)できないのでrApacheとか使うといいか
               も




2012/03/10                                              22

Mais conteúdo relacionado

Mais procurados

メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRubyemasaka
 
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)nabe-abk
 
R を起動するその前に
R を起動するその前にR を起動するその前に
R を起動するその前にKosei ABE
 
巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table についてHaruka Ozaki
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門Shintaro Fukushima
 
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題にmagoroku Yamamoto
 
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-1020171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10Toshi Harada
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10Toshi Harada
 
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術yoku0825
 
Pg14_sql_standard_function_body
Pg14_sql_standard_function_bodyPg14_sql_standard_function_body
Pg14_sql_standard_function_bodykasaharatt
 
awk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyoawk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011TokyoRyuichi Ueda
 

Mais procurados (19)

Kernel fcache-bug
Kernel fcache-bugKernel fcache-bug
Kernel fcache-bug
 
メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRuby
 
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
 
R を起動するその前に
R を起動するその前にR を起動するその前に
R を起動するその前に
 
Rでreproducible research
Rでreproducible researchRでreproducible research
Rでreproducible research
 
巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について
 
V6 unix in okinawa
V6 unix in okinawaV6 unix in okinawa
V6 unix in okinawa
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門
 
Maatkitの紹介
Maatkitの紹介Maatkitの紹介
Maatkitの紹介
 
dm-thin-internal-ja
dm-thin-internal-jadm-thin-internal-ja
dm-thin-internal-ja
 
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に
 
Ilstudy001_20110806
Ilstudy001_20110806Ilstudy001_20110806
Ilstudy001_20110806
 
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-1020171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10
 
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術
 
Pg14_sql_standard_function_body
Pg14_sql_standard_function_bodyPg14_sql_standard_function_body
Pg14_sql_standard_function_body
 
awk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyoawk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyo
 
Mysql casial01
Mysql casial01Mysql casial01
Mysql casial01
 
initramfsについて
initramfsについてinitramfsについて
initramfsについて
 

Semelhante a Rが苦手な人にもRを使って頂くために~RcommanderとRook~

RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~Kazuya Wada
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25Nobuaki Oshiro
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25Nobuaki Oshiro
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例Shigeru UCHIYAMA
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!Midori Oge
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platformToru Yamaguchi
 
Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Taku Unno
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1Makoto Haruyama
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016Yu Ito
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門Tomoya Kawanishi
 
Rails and twitter #twtr_hack
Rails and twitter #twtr_hackRails and twitter #twtr_hack
Rails and twitter #twtr_hacki7a
 
Develop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressDevelop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressAkinari Tsugo
 
シラサギハンズオン 大阪
シラサギハンズオン 大阪シラサギハンズオン 大阪
シラサギハンズオン 大阪Yu Ito
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用Yatabe Terumasa
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 

Semelhante a Rが苦手な人にもRを使って頂くために~RcommanderとRook~ (20)

RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~
 
Tokyor23 doradora09
Tokyor23 doradora09Tokyor23 doradora09
Tokyor23 doradora09
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
 
Tottoruby 20110903
Tottoruby 20110903Tottoruby 20110903
Tottoruby 20110903
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Sc2009autumn s2robot
Sc2009autumn s2robotSc2009autumn s2robot
Sc2009autumn s2robot
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
 
実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
Rails and twitter #twtr_hack
Rails and twitter #twtr_hackRails and twitter #twtr_hack
Rails and twitter #twtr_hack
 
Develop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressDevelop Web Application with Node.js + Express
Develop Web Application with Node.js + Express
 
シラサギハンズオン 大阪
シラサギハンズオン 大阪シラサギハンズオン 大阪
シラサギハンズオン 大阪
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 

Mais de Kazuya Wada

オンラインTVサービスの分析事例
オンラインTVサービスの分析事例オンラインTVサービスの分析事例
オンラインTVサービスの分析事例Kazuya Wada
 
DeployR使ってみた話
DeployR使ってみた話DeployR使ってみた話
DeployR使ってみた話Kazuya Wada
 
道玄坂Lt#2 wdkz
道玄坂Lt#2 wdkz道玄坂Lt#2 wdkz
道玄坂Lt#2 wdkzKazuya Wada
 
ハイレゾの話
ハイレゾの話ハイレゾの話
ハイレゾの話Kazuya Wada
 
Shiny-Serverあれこれ
Shiny-ServerあれこれShiny-Serverあれこれ
Shiny-ServerあれこれKazuya Wada
 
データサイエンティストカジュアルトーク by wdkz
データサイエンティストカジュアルトーク by wdkzデータサイエンティストカジュアルトーク by wdkz
データサイエンティストカジュアルトーク by wdkzKazuya Wada
 
はじめてのShiny
はじめてのShinyはじめてのShiny
はじめてのShinyKazuya Wada
 
Rで触れる日本経済~RでVAR編~
Rで触れる日本経済~RでVAR編~Rで触れる日本経済~RでVAR編~
Rで触れる日本経済~RでVAR編~Kazuya Wada
 
Rでウォーリを探してみた
Rでウォーリを探してみたRでウォーリを探してみた
Rでウォーリを探してみたKazuya Wada
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみたKazuya Wada
 

Mais de Kazuya Wada (12)

オンラインTVサービスの分析事例
オンラインTVサービスの分析事例オンラインTVサービスの分析事例
オンラインTVサービスの分析事例
 
DeployR使ってみた話
DeployR使ってみた話DeployR使ってみた話
DeployR使ってみた話
 
道玄坂Lt#2 wdkz
道玄坂Lt#2 wdkz道玄坂Lt#2 wdkz
道玄坂Lt#2 wdkz
 
ハイレゾの話
ハイレゾの話ハイレゾの話
ハイレゾの話
 
Shiny-Serverあれこれ
Shiny-ServerあれこれShiny-Serverあれこれ
Shiny-Serverあれこれ
 
データサイエンティストカジュアルトーク by wdkz
データサイエンティストカジュアルトーク by wdkzデータサイエンティストカジュアルトーク by wdkz
データサイエンティストカジュアルトーク by wdkz
 
R-3.0.0でGLM
R-3.0.0でGLMR-3.0.0でGLM
R-3.0.0でGLM
 
はじめてのShiny
はじめてのShinyはじめてのShiny
はじめてのShiny
 
JuliaでGLM
JuliaでGLMJuliaでGLM
JuliaでGLM
 
Rで触れる日本経済~RでVAR編~
Rで触れる日本経済~RでVAR編~Rで触れる日本経済~RでVAR編~
Rで触れる日本経済~RでVAR編~
 
Rでウォーリを探してみた
Rでウォーリを探してみたRでウォーリを探してみた
Rでウォーリを探してみた
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみた
 

Último

TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationYukiTerazawa
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptyuitoakatsukijp
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ssusere0a682
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2Tokyo Institute of Technology
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024koheioishi1
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料Takayuki Itoh
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 

Último (7)

TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 

Rが苦手な人にもRを使って頂くために~RcommanderとRook~

  • 1. Rが苦手な人に使って頂く ~RコマンダーとRookと私~ 2012/03/10 Tokyo.R #21 和田 計也 サイバー系
  • 2. サイバー系 はじめに ※この発表は個人の 見解であり、所属す る組織の公式見解で はありません。 2012/03/10 1
  • 3. サイバー系 自己紹介  和田 計也(@wdkz)  静岡県袋井市出身  サイバー系企業でデータマイニングエンジニア職  創立記念日が3月18日  社長の出身地が福井県鯖江市  前職はバイオベンチャー  バイオマーカ探索してた  学生時代は枯草菌の研究 2012/03/10 2
  • 4. サイバー系 アメーバピグで遊んでみた http://pigg.ameba.jp 2012/03/10 3
  • 5. サイバー系 作ってみた  holiday()関数 2012/03/10 4
  • 6. サイバー系 問題提起  Rはいろんなことができて素晴らしいですよ!  休日もわかるよ!バースデー問題も秒殺!  でも、「いいから使ってみて下さい」って言ってもな かなか使ってくれないよね  コマンド?何それ? 問題点 GUIがない マウスでポチっとな~ができない 解決策 Rコマンダー Webアプリで作っちゃう 2012/03/10 5
  • 7. サイバー系 Rコマンダー  Rコマンダーとは?  RのGUIの一つ  R StudioとかRattleとか,,  利点  マウス使える  インストール  install.packages(“Rcmdr”)  起動  require(Rcmdr) 2012/03/10 6
  • 8. サイバー系 Rコマンダー使用例  λ=3のポアソン分布ってどんな確率分布だったけ? ① ③ ② 2012/03/10 7
  • 9. サイバー系 Rコマンダーの圧倒的な利点  カスタマイズできる!! 2012/03/10 8
  • 10. サイバー系 Rコマンダーの圧倒的な利点  先ほどのholiday()関数を使ってもらう ① ② ③ 2012/03/10 9
  • 11. サイバー系 Rコマンダーのカスタマイズ方法  メニューバーにメニューを追加  Rcmdrインストールフォルダ→etc→Rcmdr-menus.txt (C:¥Users¥wada_kazuya¥Documents¥R¥win-library¥2.14¥Rcmdr) ★このテキストファイルをエディタで編集する 2012/03/10 10
  • 12. サイバー系 Rコマンダーのカスタマイズ方法  Rcmdr-menus.txtに以下を追加  Toolsメニューの下あたり(私の例では351行目の下) menu antibayMenu topMenu "" "" "" "" item antibayMenu command "休日チェキラ" tcl.holiday "" "" item topMenu cascade "あんちべ!" antibayMenu "" "" 3行目:トップメニューに「あんちべ!」文字列を追加してそれをantibayMeruと命名 1行目:antibayMenuをトップメニューに追加 2行目:antibayMenuに「休日チェキラ」という子メニューを追加して、 それがクリックされたときにtcl.holiday関数が呼ばれるようにする ★勘のいい皆様ならなんとなくわかるでしょう 2012/03/10 11
  • 13. サイバー系 Rコマンダーのカスタマイズ方法  ユーザ入力部分のUI(ダイアログ)は適当に作る tcl.holiday <-function(){ initializeDialog(title="休日チェキラ") #ダイアログのタイトル Var1 <- tclVar(substring(Sys.Date(),1,4)) #テキストボックスの初期値 Var1Entry <- tkentry(top, width=“20”, textvariable=Var1) onOK <- function(){ #OKボタン押した時の挙動 closeDialog() #閉じて XXX <- as.character(tclvalue(Var1)) #入力値を取得して command <- paste(“holiday(‘”, XXX, “’)”, sep=“”) #holiday関数呼ぶ doItAndPrint(command) #コマンド実行 #文字列生成 tkfocus(CommanderWindow()) #フォーカスを親に戻す } OKCancelHelp(helpSubject="+") tkgrid(tklabel(top, text=gettextRcmdr(“いつ?”)), Var1Entry, sticky=“e”) #テキストボックスの横のテキスト tkgrid(buttonsFrame, columnspan=2, sticky=“w”) #ボタン設置 tkgrid.configure(Var1Entry, sticky="w") #? } 2012/03/10 12
  • 14. サイバー系 Rコマンダーのカスタマイズ方法  R-cmdr-menus.txtと同様に、関数定義ファイルもetcフ ァイルに突っ込んでおく  Rcmdrインストールフォルダ→etc (C:¥Users¥wada_kazuya¥Documents¥R¥win-library¥2.14¥Rcmdr) ★etcフォルダに突っ込んでおけば、Rcmdr起動時に勝手にロードしてくれる 2012/03/10 13
  • 15. サイバー系 Rコマンダーのその他  Rコマンダーの注意点  Rcmdrのアップデートをしてしまうと、etcフォルダ内のフ ァイルが初期化(消去)されてしまうので努力が水の泡に  Rコマンダーのカスタマイズ・他の方法  Rのパッケージ作るようにコンパイル済みのものを作ること も可能。zipファイルを配布してRコマンダーからアドオンイ ンポートしてカスタマイズ化できるからユーザにとってはこ ちらのほうが嬉しい。  参考文献 http://www.okada.jp.org/RWiki/?RcmdrPlugin%C4%B6%C6%FE%CC%E7 http://cwoweb2.bai.ne.jp/~jgb11101/files/R-commander.pdf 2012/03/10 14
  • 17. サイバー系 Webアプリ作っちゃう  Rook使う  Rは(おバカな)webサーバを内蔵しているんです!  Hello World的なのやってみよう install.packages("Rook") require(Rook) s <- Rhttpd$new() s$start(quiet=TRUE) s$browse(1) ★webブラウザが起動して何やらそれっぽい雰囲気に 2012/03/10 16
  • 18. サイバー系 Webアプリ作った  Rookで作った source(“Rook.holiday.R”) holiday.start() ★できた 2012/03/10 17
  • 19. サイバー系 RookでのWebアプリ作成方法・1  ユーザ入力部分のUI(htmlのフォーム)は適当に作る Rook.holiday <- function(env) { source("holiday.R") req = Rook::Request$new(env) res = Rook::Response$new() res$write('いつ?:¥n') res$write('<form method="POST">¥n') res$write('<input type="text" name="xdim" value="2012">¥n') res$write('<input type="submit" name="Go", value="holiday">¥n</form>¥n<br>') #まだまだ続く 入力formはhtmlで力業で書く 2012/03/10 18
  • 20. サイバー系 RookでのWebアプリ作成方法・2  ユーザ入力部分のUI(htmlのフォーム)は適当に作る・続き #Rook.holiday関数の続き if (!is.null(req$POST())) { y <- req$POST()[["xdim"]] #テキストフォームの入力値を取得 holidays <- holiday(y) #holiday関数の結果を取得 res$write("<p>") if(length(holidays)==1){ res$write(as.character(holidays)) }else if(is.matrix(holidays)){ for(i in 1:nrow(holidays)){ res$write(paste(as.character(holidays[i,1]), "<br>¥n", sep="")) } }else{ for(i in 1:nrow(holidays)){ res$write(paste(as.character(holidays[i,1]), " | ", as.character(holidays[i,2]), "<br>",sep="")) } } res$write("</p>") } res$finish() } 結果もhtmlで力業で書く 2012/03/10 19
  • 21. サイバー系 RookでのWebアプリ作成方法・3  Webサーバ起動部分 holiday.start <- function(){ s <<- Rhttpd$new() #グローバル領域に変数を作成 #前ページで定義したRook.holiday関数にholidayと名付けて s$add(app = Rook.holiday, name = “holiday”) s$start() s$browse(“holiday”) #Rook.holiday関数を呼び出す } 2012/03/10 20
  • 22. サイバー系 デモ 2012/03/10 21
  • 23. サイバー系 最後に  CUI嫌いな人にRを使ってもらうには... (使いこなすわけではない)  Rコマンダーを使って、GUIを用意してやる  Rookを使って、Webアプリ作って提供する  ただし注意も必要  Rコマンダーカスタマイズを複数ユーザに設定するのはちょっと面 倒。しかも、Rcmdrアップデートするといろいろ消える  Rookで実運用は(たぶん)できないのでrApacheとか使うといいか も 2012/03/10 22