Rで自作の関数や変数をワークスペースに表示させない方法
Rでは自作の関数や変数を作成することができるが、これらは通常のRスクリプトから読み込むと、ワークスペース(ls()
で表示されるオブジェクト郡)に表示されてしまい、煩雑になりがちである。
それを解決する方法は、自作の関数や変数をパッケージ化してしまうことである。
目的
自作関数・変数をワークスペースに表示させずに定義したい。
方法
自作パッケージを作成する。
手順
1. コード
まず、自作関数・変数を記述したRスクリプトファイルを準備する。
ファイルは複数可。
ここでは、code1.R
・code2.R
を作成したとする。
これらを作業用ディレクトリ(例えば~/tmp/
)に置く。
2. スケルトン
作成するパッケージ(mypackage
)のテンプレートを作成する。
setwd("~/tmp") # 作業用ディレクトリに移動 library(tools) package.skeleton("mypackage", code_files = c("code1.R", "code2.R"))
~/tmp/mypackage
が作成されるはず。ここには以下のファイルが生成されている。
ディレクトリ・ファイル名 | 内容 |
---|---|
man/ | マニュアル(ヘルプ)が入っているディレクトリ |
R/ | 自作関数らのRコードが入っているディレクトリ |
NAMESPACE | 名前空間 |
DESCRIPTION | パッケージの説明 |
Read-and-delete-me | 読んだら捨てて良し(捨てなくても良し) |
3. マニュアル
manファイルは各関数、各変数ごとに一つ一つ作成されている。
これの3, 4行目あたりの\title
部分を完成させる。
というのも、manファイルの\title
部分が空だとエラーになるためだ。
\title{ %% ~~ data name/kind ... ~~ %%%%%%%%%%%%%%%%%%%% %%% タイトルを書く %%% %%%%%%%%%%%%%%%%%%%% }
4. パッケージ化
ターミナルを起動して、以下を実行
% cd ~/tmp/ % R CMD INSTALL mypackage
5. テスト
Rを起動して、以下を実行
library(mypackage) ls()
character(0)
と表示されるはず。それでも自作関数や変数は使える状態であることを確認しよう。
結論
自作関数・変数を、ワークスペースに表示させずに、作成したい場合は、パッケージ化させてしまうとスッキリする。
参考
無料でPDFファイルサイズを小さくする方法
目的
PDF書類のファイルサイズを、無料で、できるだけ可読性を保ったまま、小さくしたい。
方法
ghostscriptを利用する。ghostscriptは(\LaTeX)でおなじみだと思われる。知らない方は、Mac OSであれば、Homebrewでインストールできる。
% brew install ghostscript
Unixの方はもともと入っている(?)のだろうか。 Windowsの方はGhostscript: Ghostscript, GhostPCL, GhostXPS and MuPDF Downloadsからダウンロードできる。
サンプルコード
.bash_profile
に以下を記述する。
# Usage: cpdf [input file] [output file] [dpi] [Gray*|CMYK|RGB] [screen*|ebook|printer|prepress|default] cpdf() { gs -q -sOutputFile=${2:-"output.pdf"} -sDEVICE=pdfwrite \ -dNOPAUSE -dBATCH -dSAFER -dQUIET \ -dCompatibilityLevel=1.4 -dPDFSETTINGS=/${5:-"screen"} \ -dEmbedAllFonts=true -dSubsetFonts=true \ -sColorConversionStrategy=${4:-"Gray"} -dProcessColorModel=/Device${4:-"Gray"} \ -dGrayImageDownsampleType=/Bicubic -dGrayImageResolution=${3:-"100"} \ -dMonoImageDownsampleType=/Bicubic -dMonoImageResolution=${3:-"100"} \ -dColorImageDownsampleType=/Bicubic -dColorImageResolution=${3:-"100"} \ $1 < /dev/null }
これを書くことで、コンソール上で
% cpdf [圧縮したいPDFファイル名]
という使い方ができる。
cpdf
は、引数順に、
cpdf [入力ファイル名*] [出力ファイル名] [dpi値] [カラースケール] [プリセット]
を設定できる。
入力ファイル名のみは必須である。入力ファイル名以外を指定しない場合、出力ファイル名はoutput.pdf
、dpi値は100
、カラースケールはグレイスケール、プリセットはscreen
になる。
例えば、入力ファイルinput.pdf
を出力ファイルout.pdf
として、dpi=50
、カラースケールをCMYK
で生成したい場合は、
cpdf input.pdf out.pdf 50 CMYK
となる。(dpi=50だとかなり荒い)
補足
もちろん、gs
コマンドを直接コンソールで書いてもOKだが、オプションが多いため、煩雑になる。bashを利用するか、シェルスクリプトを書いて実行したほうが良い。
gsコマンド(執筆途中)
ghostscriptはgs
コマンドで実行する。
% gs [オプション] [入力ファイル名]
オプションは沢山あり、全てを説明すると膨大な量になる。ここではPDF書類の圧縮に関連する一部を紹介する。
オプション | 意味 | 値 | デフォルト値 |
---|---|---|---|
-sOutputFile |
出力ファイル名 | - | output.pdf |
-sDEVICE |
出力デバイスの選択 | gs -h で一覧を見れる |
- |
-dNOPAUSE |
各ページの処理の一時停止を無効にする | ||
-dBATCH |
インタラクティブなループコマンドに入った後に終了する | ||
-dSAFER |
deletefileとrenamefileオペレータを無効にし、パイプで連結されたコマンド(%パイプ%)を無効にする | ||
-dQUIET |
標準出力へのルーチン情報のコメントを非表示にする | ||
-dPDFSETTINGS |
定義済みのプリセットから1つを選ぶ | /screen , /ebook , /printer , /prepress , /default |
/default |
-sColorConversionStrategy |
色の定義 | Gray , CMYK , RGB |
|
-dProcessColorModel |
色の定義 | /DeviceGray , /DeviceCMYK , /DeviceRGB |
|
-dCompatibilityLevel |
1.3, 1.4, 1.5, 1.6 | 1.4 | |
-dEmbedAllFonts |
true or faluse |
true |
|
-dColorImageDownsampleType |
/Subsample , /Average , /Bicubic |
/Subsample |
|
-dColorImageResolution |
dpi | 100 | 72 |
-dGrayImageDownsampleType |
/Subsample , /Average , /Bicubic |
/Subsample |
|
-dGrayImageResolution |
dpi | 100 | 72 |
-dMonoImageDownsampleType |
/Subsample , /Average , /Bicubic |
/Subsample |
|
-dMonoImageResolution |
dpi | 100 | 72 |
-dSubsetFonts |
true or faluse |
true |
他にも多くのオプションがある。詳しくは/usr/local/share/ghostscript/doc/
を参照されたい。ここではPDF書類のファイルサイズを小さくすることに関連しているオプションのみを取り上げている。
英語ばかりで良くわからないかもしれないが、重要なのは、-dGrayImageResolution
で、この数値で解像度が決定されることだ。
dpiは数値が大きいほどきれいなPDFになる。小さいほど荒い。 つまり、ファイルサイズを小さくしたかったら、dpiを小さく設定すると良い。
実は、-dPDFSETTINGS=/screen
はデフォルトで72dpiに設定される。これはかなり荒く、可読性が保たれていない例が多い。筆者の推奨は100dpi程度である。