パッケージを作る環境

  • RtoolsをWindowsに入れる
    • こちらから
      • Windowsコマンドラインでパッケージに変換するため
      • 問題点は、RtoolsがRのバージョンごとに異なることか
    • ダウンロードしてSetUp.exeを実行する
      • Rtoolsはコンパイラ(gccらしい)やperlを使ったもろもろを実行させる必要があるので、それらがインストールされる
      • セットアップ時にRtoolsを使うためのパス変更をするオプションもあるので、それを選択すると、以下がWindowsのシステムパスの先頭に書き込まれる
c:\Rtools\bin;c:\Rtools\perl\bin;c:\Rtools\MinGW\bin;c:\Rtools\MinGW64\bin;
  • Rで作業をしよう
    • 以下のように、3つの関数"LorenzAttractor","Draw3DLorenzAttractor","DrawPairWiseLorenzAttractor"を作り、データ"LA"を作る
    • これをRのpackage.skeleton()関数に渡す。パッケージ名を"LorenzAttractor"と指定しよう
LorenzAttractor<-function(Np=1000,dt=0.01,x=runif(3)){

	xs<-matrix(0,Np,3)
	xs[1,]<-x
	for(i in 2:Np){
		xs[i,1]<-xs[i-1,1]+(-10*xs[i-1,1]+10*xs[i-1,2])*dt
		xs[i,2]<-xs[i-1,2]+(28*xs[i-1,1]-xs[i-1,2]-xs[i-1,1]*xs[i-1,3])*dt
		xs[i,3]<-xs[i-1,3]+(-8/3*xs[i-1,3]+xs[i-1,1]*xs[i-1,2])*dt
	}
	list(xs=xs,Np=Np,dt=dt,x=x)
}

Draw3DLorenzAttractor<-function(LA){
	library(rgl)
	xs<-LA$xs
	plot3d(xs[,1],xs[,2],xs[,3],col=rainbow(1000),cex=0.1)
}

DrawPairWiseLorenzAttractor<-function(LA){
	xs<-LA$xs
	plot(as.data.frame(xs))

}

# example

LA<-LorenzAttractor()
Draw3DLorenzAttractor(LA)
DrawPairWiseLorenzAttractor(LA)
package.skeleton("LorenzAttractor",c("LorenzAttractor","Draw3DLorenzAttractor","DrawPairWiseLorenzAttractor","LA"))
  • package.skeleton()の出力ファイルの処理
    • Rの作業ディレクトリにパッケージ名のフォルダができる
    • フォルダ以下には複数のフォルダとファイルができる
    • このフォルダのうち、"man"フォルダの中にできるファイルは一部、書き換えないと、パッケージ化処理が回らないので、"Title"と"examples"とを適切に書き換える(アルファベットで)
  • パッケージ作成
    • コマンドラインのRを動かせるように、WindowsのシステムPATHにRを指定する。
      • 「コンピュータ」を右クリックして、「システムの詳細設定」に進み「環境変数」へ、次いで、「システム環境変数」の「PATH」を選び、以下の文字列(Rのインストール先に合わせて)を書き込む
C:\Program Files\R\R-2.12.0\bin
    • コマンドラインで、"R"というコマンドを打って、Rがコマンドラインで立ち上がればOK
    • "R CMD check LorenzAttractor --no-latex --no-install"でチックしてWarningだけなら次に進める
    • " R CMD build LorenzAttractor --binary" で"LorenzAttractor.zip"なる配布形式のzipファイルができる
  • パッケージの利用
    • zipファイルはローカルにあるので、RGUIのツールバーから「パッケージ」→「ローカルにあるzipファイルからの…」で、zipファイルを指定する
utils:::menuInstallLocal()
 パッケージ 'LorenzAttractor' は無事に開封され、MD5 サムもチェックされました 
    • となるので、"library(LorenzAttractor)"として、"help(LorenzAttractor)"とすれば、先ほど、何もヘルプにならないヘルプファイル("man"フォルダの中の"パッケージ名-package.Rd")の中身が表示される
    • さらにそのパッケージのヘルプファイルの末尾のクリッカブルな"index"を選べば、個々の関数などのヘルプファイル(同じく"xxx.Rd"ファイルの中身なので、そこで仕事をしておかないと、中身はプアなまま)を開くことができる