ryamadaのコンピュータ・数学メモ RSSフィード

統計学・遺伝学関連の姉妹ブログ『ryamadaの遺伝学・遺伝統計学メモ』
医学生物学と数学とプログラミングの三重学習を狙う学習ツール
数学用語集(TOMAC)

2015-08-09 Rの自分用関数をGithub的公開型パッケージにする

[][]おおまかな流れ〜Rの自分用関数をGithub公開型パッケージにする 14:53

  • 簡単には以下の手順
    • 準備
      • githubを使えるようにする
      • Rのdevtoolsパッケージを使えるようにする
      • Rのroxgen2パッケージを使えるようにする
    • 作成の方法
      • "Rryamada"というパッケージを作る
      • ローカルPCにRのパッケージとして適切なディレクトリ構成と最低限のファイル構成とで作成する
      • ローカルPCのディレクトリ構成をgithub上の"Ryamada"というリポジトリとgitでつないて、アップロードする
    • 利用の方法
      • Rの中からgithub上のパッケージ置き場にアクセスしてインストールして使う(そのときのgithub上の最新版がインストールされる)
    • 更新の方法
      • ローカルPC上でファイルを書き換え、gitでつないでgithubの中味を更新する

[][]準備〜Rの自分用関数をGithub公開型パッケージにする 14:28

  • LinuxノートPCが手元に入ってgitやら、コンパイルやらが簡単になったので、遊んでみよう
  • 準備
    • Github,git
      • Githubに無料アカウントを作る→ryamada22のgithub
      • gitコマンド操作ができるようにする
        • Arch/Manjaroリナックスの場合は
sudo pacman -S git
    • R
      • Rをインストールする
      • コンパイル環境を整える
        • gcc/gfortranを入れる(Arch/Manjaroリナックスの場合)
sudo pacman -S gcc-fortran
        • devtoolsパッケージを入れる
        • roxygene2パッケージを入れる
install.packages("devtools",repos="http://cran.ism.ac.jp/")
library("devtools")
devtools::install_github("klutometis/roxygen")
library(roxygen2)

[][]作成の方法〜Rの自分用関数をGithub公開型パッケージにする 14:48

  • Rのパッケージは、「インストール」という手続きを踏んで使うことになるので、その「インストール手続き」に合致したファイル構成を作る必要がある
  • その構成と必要ファイルとをぱぱっと作ってくれるのが、devtoolsパッケージとroxygene2パッケージとが提供するcreate()関数とdocument()関数
  • 適当な作業ディレクトリで作業を開始する
  • Rryamadaなる名称のパッケージを作るので
create("Rryamada")
  • とする。そうすると、必要なディレクトリ構成ができる
  • 次にR関数を書いたファイルを作り、作られたディレクトリ構成の中の"R"ディレクトリに納める
  • ただし、このRファイルには、適当な説明ヘッダをつける必要がある
  • なぜなら、その説明ヘッダを読み取って、パッケージに必要なR関数の説明文書をdocument()関数に作ってもらうからである
  • 以下のような書式である
#' A Sample Function
#'
#' This is a toy function
#' @param n is integer for number of randam values.
#' @keywords toy
#' @export
#' @examples
#' n <- 100
#' ry_sample_fx(n)

ry_sample_fx <- function(n){
	plot(rnorm(n))
}
  • このファイルをry_sample_fx.Rという名前にして Rディレクトリに置き、
document()
  • というコマンドを発行すれば出来上がり(エラーが出たら、最低限の条件をクリアしていないということなので、エラーメッセージに応じて対処する
  • 次はこれをgithubに上げる作業
  • githubで新規レポジトリを作る。Rryamadaという名前で作る。
  • からっぽで作るので、README.mdも作らない、という条件で作ろう。
  • そうすると、「そんな空っぽで作らないでください、以下のいくつかの方法の一つでおねがいしますよ」という画面に移動するので、そのうちの一つのやり方にそって作る
  • ローカルPCで、パッケージのトップディレクトリに居る状態で以下のコマンドを発行する
echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/ryamada22/test.git
git push -u origin master
  • すると、ローカルのディレクトリが、githubのレポジトリとgitコマンドでつながった関係になるとともに、README.mdファイルが作成される
  • パッケージ諸ファイルのアップロード(push)の準備ができたので、さらに次のコマンドを発行する
    • 第1行は「すべて=.」をgitする対象に加える、という意味
    • 第2行は、その処理に付与する「コメント」
    • 第3表は、「アップロード=push」
git add .
git commit -m 'initial  package '
git push

[][]利用の方法〜Rの自分用関数をGithub公開型パッケージにする 14:48

  • これは簡単。roxygen2パッケージをインストールしたのと同じで
library(devtools)
install_github("ryamada22/Rryamada")
library(Ryamada)

[][]更新の方法〜Rの自分用関数をGithub公開型パッケージにする 14:48

  • ローカルPCのディレクトリはすでにgithubのRryamadaとリンクしているので、
  • 適当に書き換えて、それに応じて
document()
  • もして、その上で以下のようにする。すべてを上げずに、変更したものだけを指定しても良いかもしれない
git add .
git commit -m 'modification'
git push
  • 別のPCから改変を加えるときには、そのPCにRryamada用のディレクトリをキリ
mkdir Rryamada
git clone https://github.com/ryamada22/Rryamada
  • のようにして、変更したと、pushする

[][]些細なこと〜Rの自分用関数をGithub公開型パッケージにする 17:11

  • 作ってしまったgithubのレポジトリを消したいことがある。特にはじめのころは馬鹿みたいなものを作ってしまって、ごちゃごちゃになるので
  • そのときは、そのレポジトリのsettingsに行き、その下のように出てくる「危険な操作」の中にある、消去、を選ぶ
  • 何度もパッケージをアップロードしては、インストールしなおしてみたくもなる。そのときは、インストールしたパッケージを消去するコマンドを知っている必要がある
remove.packages("hoge")
  • とする