私的パッケージ作成法
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
// 間瀬茂 2006.02.22
R オブジェクトが多数ある場合に名前の衝突が起きる。この問...
* 手順
- 必要な関数 my.func() を定義
- package.skelton() でパッケージの雛形を作成
- NAMESPACE ファイルに利用する関数を記述
- パッケージ作成
- パッケージをインストールして利用
~
~
私的パッケージ作りの第一歩は標準パッケージ COLOR(red){too...
> library(tools) # tools パッケージは既定ではロードさ...
> ?package.skeleton # 関数説明をまず読む(が、何やら難し...
# 次のような関数とデータを作成(もしくは定義ファイルから...
> f <- function(x,y) x+y
> g <- function(x,y) x-y
> d <- data.frame(a=1, b=2)
> e <- rnorm(1000)
> ls()
[1] "d" "e" "f" "g" "last.warning"
# 現在のセッション中のオブジェクトからパッケージ pkgA を...
> package.skeleton(list=c("f","g","d","e"), name="pkgA")
Creating directories ...
Creating DESCRIPTION ...
Creating READMEs ...
Saving functions and data ...
Making help files ...
Created file named './pkgA/man/pkgA.package.Rd'.
Edit the file and move it to the appropriate directory.
Created file named './pkgA/man/f.Rd'.
Edit the file and move it to the appropriate directory.
Created file named './pkgA/man/g.Rd'.
Edit the file and move it to the appropriate directory.
Created file named './pkgA/man/d.Rd'.
Edit the file and move it to the appropriate directory.
Created file named './pkgA/man/e.Rd'.
Edit the file and move it to the appropriate directory.
Done.
Further steps are described in ./pkgA/README
これで R の起動ディレクトリ(今は COLOR(red){/tmp})に CO...
hoge@KNX40HDA3:/tmp/pkgA$ ls
DESCRIPTION R README data man src
次に以下の内容のファイル COLOR(red){/tmp/pkgA/NAMESPACE} ...
export(f, g)
次にパッケージをインストール(Linux ではルートで実行する...
root@KNX40HDA3:/tmp# R CMD INSTALL pkgA
* Installing *source* package 'pkgA' ...
** libs
WARNING: no source files found
chmod: cannot access `/usr/local/lib/R/site-library/pkgA...
** R
** data
** help
>>> Building/Updating help pages for package 'pkgA'
Formats: text html latex example
d text html late...
e text html late...
f text html late...
g text html late...
pkgA.package text html late...
** building package indices ...
* DONE (pkgA)
次に R を起動してインストールした自作パッケージ COLOR(red...
> library(pkgA)
> ls() # 表向き何も無い(つまり大局的環境 .gl...
character(0)
> f # しかし、NAMESPACE ファイルで export ...
function (x, y)
x + y
<environment: namespace:pkgA>
> g
function (x, y)
x - y
<environment: namespace:pkgA>
次にディレクトリ COLOR(red){pkgA} のクローン COLOR(red){p...
> library(pkgB) # 新しい pkgB を読み込む
次のパッケージを付け加えます: 'pkgB'
The following object(s) are masked from package:p...
f g # パッケージ pkgB の f,g がパッケ...
> ls()
character(0)
> f # この f は直近に読み込んだパッケージ...
function (x, y)
x + y
<environment: namespace:pkgB>
> g # この g は直近に読み込んだパッケージ...
function (x, y)
x - y
<environment: namespace:pkgB>
> pkgA::f # (追い出された)パッケージ pkgA の...
function (x, y)
x + y
<environment: namespace:pkgA>
> pkgA::f(1,2) # (追い出された)パッケージ pkgA の...
[1] 3
> pkgB::f # パッケージ pkgB の関数 f として参照
function (x, y)
x + y
<environment: namespace:pkgB>
> pkgB::f(1,2) # パッケージ pkgB の関数 f を使用する...
[1] 3
という具合に名前の衝突を避けたければ、一々 COLOR(red){pkg...
* 背景
初級Q&Aで「関数を含むファイルを多数作ったら、名前の衝...
~
パッケージというと、CRAN に登録を目指す強者だけが作れる難...
終了行:
// 間瀬茂 2006.02.22
R オブジェクトが多数ある場合に名前の衝突が起きる。この問...
* 手順
- 必要な関数 my.func() を定義
- package.skelton() でパッケージの雛形を作成
- NAMESPACE ファイルに利用する関数を記述
- パッケージ作成
- パッケージをインストールして利用
~
~
私的パッケージ作りの第一歩は標準パッケージ COLOR(red){too...
> library(tools) # tools パッケージは既定ではロードさ...
> ?package.skeleton # 関数説明をまず読む(が、何やら難し...
# 次のような関数とデータを作成(もしくは定義ファイルから...
> f <- function(x,y) x+y
> g <- function(x,y) x-y
> d <- data.frame(a=1, b=2)
> e <- rnorm(1000)
> ls()
[1] "d" "e" "f" "g" "last.warning"
# 現在のセッション中のオブジェクトからパッケージ pkgA を...
> package.skeleton(list=c("f","g","d","e"), name="pkgA")
Creating directories ...
Creating DESCRIPTION ...
Creating READMEs ...
Saving functions and data ...
Making help files ...
Created file named './pkgA/man/pkgA.package.Rd'.
Edit the file and move it to the appropriate directory.
Created file named './pkgA/man/f.Rd'.
Edit the file and move it to the appropriate directory.
Created file named './pkgA/man/g.Rd'.
Edit the file and move it to the appropriate directory.
Created file named './pkgA/man/d.Rd'.
Edit the file and move it to the appropriate directory.
Created file named './pkgA/man/e.Rd'.
Edit the file and move it to the appropriate directory.
Done.
Further steps are described in ./pkgA/README
これで R の起動ディレクトリ(今は COLOR(red){/tmp})に CO...
hoge@KNX40HDA3:/tmp/pkgA$ ls
DESCRIPTION R README data man src
次に以下の内容のファイル COLOR(red){/tmp/pkgA/NAMESPACE} ...
export(f, g)
次にパッケージをインストール(Linux ではルートで実行する...
root@KNX40HDA3:/tmp# R CMD INSTALL pkgA
* Installing *source* package 'pkgA' ...
** libs
WARNING: no source files found
chmod: cannot access `/usr/local/lib/R/site-library/pkgA...
** R
** data
** help
>>> Building/Updating help pages for package 'pkgA'
Formats: text html latex example
d text html late...
e text html late...
f text html late...
g text html late...
pkgA.package text html late...
** building package indices ...
* DONE (pkgA)
次に R を起動してインストールした自作パッケージ COLOR(red...
> library(pkgA)
> ls() # 表向き何も無い(つまり大局的環境 .gl...
character(0)
> f # しかし、NAMESPACE ファイルで export ...
function (x, y)
x + y
<environment: namespace:pkgA>
> g
function (x, y)
x - y
<environment: namespace:pkgA>
次にディレクトリ COLOR(red){pkgA} のクローン COLOR(red){p...
> library(pkgB) # 新しい pkgB を読み込む
次のパッケージを付け加えます: 'pkgB'
The following object(s) are masked from package:p...
f g # パッケージ pkgB の f,g がパッケ...
> ls()
character(0)
> f # この f は直近に読み込んだパッケージ...
function (x, y)
x + y
<environment: namespace:pkgB>
> g # この g は直近に読み込んだパッケージ...
function (x, y)
x - y
<environment: namespace:pkgB>
> pkgA::f # (追い出された)パッケージ pkgA の...
function (x, y)
x + y
<environment: namespace:pkgA>
> pkgA::f(1,2) # (追い出された)パッケージ pkgA の...
[1] 3
> pkgB::f # パッケージ pkgB の関数 f として参照
function (x, y)
x + y
<environment: namespace:pkgB>
> pkgB::f(1,2) # パッケージ pkgB の関数 f を使用する...
[1] 3
という具合に名前の衝突を避けたければ、一々 COLOR(red){pkg...
* 背景
初級Q&Aで「関数を含むファイルを多数作ったら、名前の衝...
~
パッケージというと、CRAN に登録を目指す強者だけが作れる難...
ページ名: