RStudioで日本語PDF

1.環境

項目 内容
OS windows7
R 3.5.0
knitr 1.20
RStudio 1.1.453
TeXディストリ w32Tex 角藤版

2.R Markdown

RStudioで、新規R Markdownを選択した時に作成される雛形文書そのもの。

3.結果

このまま実行した時の結果。
! Package inputenc Error: Unicode char 蟷エ (U+5E74)

(inputenc) not set up for use with LaTeX.

エラー: Failed to compile 雛形Rmd.tex. See 雛形Rmd.log for more info.
実行が停止されました

どうやら、日本語(Unicode)処理ができないらしい。

4.原因

PDF文書を指定すると、デフォルトのTexとして
(1) windows : MikTex
(2) OSX : MacTex
(3) Linux : TeX Live
のエンジンが使用されるため。
TeX Wikiによれば、
MiKTeX は Microsoft Windwos 向けの TeX のディストリビューションです. TeX Live と並んで国際的に広く使われていますが,日本語 pTeX が含まれていません. 特別な理由がない限り TeX Live または W32TeX の利用をおすすめします.
とのこと。

5.対策

YAMLヘッダーに明示的に、latex_engine として、UTF-8 ベースの TeX を指定する必要があるようです。

文書全体を以下に示します。

6.最後に

Rmdファイルに日本語名を使用したら、見事にコケました
windows上では、日本語のファイル名は使用できないようですので注意してください。
(追)
Linux(Ubuntu18.04)では、日本語ファイル名が問題なく使用できました。

追伸

再テストの結果、上記のR Markdown が一切動作しなくなりました。
Windows 上も Virtual Box の Ubuntu 上でも!
思い当たる点は、
(1) windows – 角藤版を最新にしようとインストーラを起動したこと。結果的には、何もせずキャンセルしたのだが・・・・
(2) Ubuntu – Tex Live のtlmgr が動かないので、その周りの更新等を行ったこと。

一旦、w32Tex(Windows)とTexLive(Ubuntu)を削除し、w32Texは再インストールした。
(Tex Live の再インストールは保留中)
それでも、結果は変わらず。
エラーログからは、エラー内容が全く読み取れず、対策の打ちようがない。
思い悩んだ挙句、思いついたのが「latex_engine」の変更。
「TeXworks」のタイプセットに表示されるものを指定してみよう!
① pdfplatex
指定不可。指定できるのは、pdflatex,lualatex,xelatex の何れかとのこと。
② pdflatex
しからばと、これを指定するも、想定通り Unicode 周りでエラー。
③ lualatex
万歳!問題なくPDFが出力される。
④ xelatex
念のために試してみたが、やはりエラーとなる。

結果として、私の現在の環境では「lualatex」を指定すれば良いようです。
注意
YAMLヘッダに「mainfont」を指定しないと、日本語が表示されないので、次の様に指定する必要があります。

なお、「Meiryo」の部分を「メイリオ」と指定することができませんでしたので、ご注意の程を!

R 起動コマンドの改善(windows編)

RGui を閉じる際に、毎回ワークスペースの保存有無を聞かれるが、答えはいつも[n」なのに・・・
「q(‘n’)」とするのも面倒だし。
こちらのPDF文書およびSlide Shareに、その解決策が記載されていました。
保存有無を問わないようにするには、次の何れかを指定します。

–save ワークスペースを保存して終了
–no-save ワークスペースを保存しないで終了

これを、R のインストール時に作成されたショートカットに設定します。
保存しない場合の設定は、次の通りです。
(1) ショートカットを右クリック、プロパティを開く。
(2) プロパティの「リンク先」を次の通り変更する。
(変更前)”C:\Program Files\R\R-3.5.0\bin\x64\Rgui.exe” –cd-to-userdocs
(変更後)”C:\Program Files\R\R-3.5.0\bin\x64\Rgui.exe” –cd-to-userdocs –no-save
(Rgui の場所は、自分の環境に合わせて変更してください。)
(3) 「OK」をクリックして、変更を保存する。

ubuntu 18.04 への R 3.5 のインストール

UBUNTU PACKAGES FOR Rからの引用。
手順は以下の通り。

/etc/opt/sources.listの編集

最新のR 3.5パッケージを入手するため、/etc/apt/sources.list の最下行に次のエントリを追加する。

追加は、vim でも gedit でも好きなエディタでよい。例えば、gedit なら

とし、上記コードを最下行にコピペし「保存」すればよい。
その際、何やらかんやらメッセージが出るが、ファイルは更新されているので無視してよい。

鍵の設定

(2018/11/15追加)
Ubuntu 鍵サーバにある2番目の鍵に問題があるので、次の何れかの方法でキーを登録する必要がある。

詳しくは、こちらを参照。

R のインストール

SpyderのUpdate

Anacondaのインストールと同時にインストールされた Spyder の Update 方法です。
pipを使用せず、condaを使用するよう促されますので、次の通りコマンドラインから入力します。

デスクトップ・ショートカットの作成

年を取ってくると、折角インストールしたものの名前をすぐ忘れてしまう。
困ったものだ。
Windowsなら、デスクトップにショーカットアイコンをずらずら並べれておけば、名前を忘れる心配もないのだが、Ubuntu はそうもいかない。
物よっては、デスクトップ左下隅のアイコンをクリックすればアプリケーションがアイコンで表示されるものもあるが、anaconda 関連のアプリはそれもダメで(何故なんだろう)、ターミナルからコマンドを叩かなければ実行できない!!!。

その様な訳で、どうしてもデスクトップ・ショートカットが必要なのです。
色々調べた結果、一番簡単な Ububtu 18.04 におけるデスクトップ・ショートカットの作成方法を、あくまで備忘録として以下に書き留めておきます。
詳しくは、こちらを見て下さい。

ここでは、マニュアルで作成するよりも簡単に作成できる、gnome-desktop-item-editを使用します。

1. gnome-desktop-item-edit のインストール

先ずは、gnome-desktop-item-edit をインストールします。

2. ランチャーの作成

デスクトップ・ショートカット・ランチャーを作成するため、次の linux コマンドを実行し、図に示すような必要事項を入力します。
(図では、”anaconda-navigator” を例として使用しています。)

最後に、OKを押すと、”anaconda-navigator.desktop” というファイルが “~/デスクトップ/” に作成されます。

動作確認

この段階で、デスクトップのショートカットが出来ているはずですので、それをダブルクリックします。
1回目の実行時には警告が出ますが、無視して実行すれば、次回以降このメッセージは表示されなくなります。
(2018/11/15 追記)
デスクトップ直後は、アイコンに「anaconda.png」を指定しても異なったアイコンが表示されました。
修正ができないので、そのまま実行を強行したところ(警告が出ます)、指定のアイコンに変りました。
何故????

都道府県境界データの取得

地図描画に使用する都道府県境界データ(ShapeFile)は、次の2つのサイトから取得できる。

1. 国土地理院

(1) GIS ホームページ
(2) データ形式:GML(JPGIS2.1)シェープファイル・・・デフォルトで選択されている
   → 2.政策区域行政区域 を選択
(3) データダウンロードの画面が表示されるので、必要な全国、または都道府県を選択して、「次へ」をクリック
(4) その後、測量した年度を指定し、アンケートに答え、利用約款に同意することでダウンロードが可能になる。

2. e-Stat(政府統計の総合窓口)

(1) e-Stat ホームページ
(2) トップメニューの「地図で見る」をクリック→「境界データダウンロード
(3) 「小地域」→「国勢調査」→「2015年」(2015,2010,2005,2000年のいずれか)
(4) 「町丁・字等別」→「世界測地系緯度経度・Shape形式
(5) 都道府県選択画面が表示されるので、必要なデータをダウンロードする

ggplot2 development version をインストール

ggplot2 による地図を描画するため、現バージョンにバンドルされていない geom_sf() が必要なので、development version をインストールしたい。方法は、こちらに記述されているが、R console から次のコマンドを実行する。

ところが、これがうまく行かない。
途中、2回もRtoolsのインストールが走り、延々処理した揚句の失敗が痛い!
一旦は、インストールを諦めたものの、どうしても欲しい物は欲しいのである。

思い直し、Rtoolsの何たるかものかを調べることから再開。
Rtoolsとは、Windows 環境でパーッケージをソースからインストールする際に
「C++でコンパイルするため,C++コンパイラが必要で,WindowsではRtoolsを使う」
とのこと。

Rtoolsのインストール手順は以下の通り。
(1) 既存のRtoolsをアンインストール
(2) Building R for Windows からRtoolsをダウンロード
(3) ダウンロードした RtoolsXX.exe(XX:バージョン)をダブルクリック
(4) R console から次のコマンドを入力して、gcc がインストールされていることを確認する。

以下のようなメッセージが表示されれば成功。

これで、Rtools のインストールが完了したので、先程のコマンドを実行する。

コンパイルが走るので、時間が掛るが辛抱強く終わるのを待つ。
終ったら、バージョンを確認する。

メデタシ、メデタシ?

Rで地図を描画する – mapview

Ubuntu 17.10 へインストール

Windows環境では、問題なくインストールできたが、
Ubuntuでは、延々処理した揚句、インストール失敗。
そこで、その手順を示す。
(1) libcairo2-dev のインストール
次にインストールする svglite に必要なため、最初にこれをインストールする。

(2) svglite のインストール
Rコンソールから

(3)mapview のインストール
Rコンソールから

以上

Rで地図を描画する geom_sf()

Rでshapefileを入力して、地図を描画できると言うことで、いろいろ試してみるも、
問題山積して、収拾ががつかない状況にある。
しかし、何とか解決したものだけでもメモにして残しておく。
環境は、windows7、R 3.4.4(2018/4/6時点の最新版)

geom_sf()がインストールできない

shapefileを入力するのに、従来は maptools の readShapePoly 等を使用するわけだが、現在は

と、警告が発せられる。

Googleで調べてみると、将来の方向性として sf パッケージが良さそうなので sf をインストールしてみる。
RでGISをやるときにはsfパッケージ、という世の中になるらしい。に詳しい説明があります。)
これによって、shapefileは首尾よく入力できるようにはなった。が、sf::st_read()で入力したデータは fortify でのフォーマット変換ができないので、geom_sf()を使用することになる。

これで plot を使用すれば地図の描画はできるが、ggplot2 を使用する場合は、geom_sf()を使用しなければならない。
geom_sf()は、ggplot2 の関数だが、バージョン2.2.1にはこれがバンドルされていないと言う問題がある。
インターネットを探せば、上位にこのインストールの件についての質問が為されているが、答えは何時も

で、インストールせよとのご託宣。種々調べたが、これ以外には方法がない模様。

しかし、試しに windows 環境で実行するも、結果的に失敗に終わる。断定はできないが多分無理。
Windows な人の結論、
次期バージョンを待とう!

(インストールはこちらをご覧ください。)
windowsは見捨てて、guest os の Ubuntu 17.10 で再挑戦。インストールのコマンドは全く同じ。
こちらは、問題なくインストール完了!
ggplot2 2.2.1.9000(変なバージョン番号だが問題はなし)

(「RでGISをやるときにはsfパッケージ、という世の中になるらしい。」によれば、Ubuntu 16.10 以降でなければ、いろんな問題があるらしいので注意してください。)

reshape2とtidyr

例えば、ggplot を使用して次の様な「男女別の人口推移」のグラフを作るものとします。

総務省の人口統計等からデータは入手できます。
ダウンロード後、Excelなどで次のように編集して、csv形式でとして保存するのが一般的な方法かと思います。

単純な表なので簡単に作れますが、面倒と思う人のため、次にデータを用意しておきました。

データの構成は、このように作るのが一般的と思いますが、これを上のような棒グラフでプロットするのは大変困難です。
x軸(年次)が共通で、y軸が各々男と女を別個にプロットすると重なり合ってしまうためです。回避手段(例えば、dodge を使うなど)は有るかもしれませんが、私の力量では無理です。
この問題の解決策は、データを次の通りに変更すること(が、一番手っ取り早い手段)です。

つまり、年次別に男と女の2行にしてにデータを持つことです。当然、数値が男女何れかを識別するために、変数名「男」、「女」をデータとする必要があります。(なお、この形式のデータフォーマットは、前者を wide-format、男女別に人口を持つ後者を long-format と言うのだそうです。)
力技でこのような変換もできますが、簡単に行うのがreshape2::melttidyr::gatherです。
変換方法は次の通り。
(1) reshape2::melt

(2) tidyr::gather

この2つは、全く同じことを行っていますが、tidyrの方がスピードが速いのでお勧めだそうです。