49  ネットワークドライブで R を使用する場合

49.1 はじめに

ネットワークドライブや会社の共有ドライブで R を使用する場合、様々な問題が発生することがあります。この章では、ネットワークドライブで R を使用した場合によくあるエラーについて解説し、筆者の経験から得たアプローチ並びに対処法を提案します。また、R Markdown に関するヒントも紹介します。

R をネットワークドライブで使用する場合の原則

  1. お使いのコンピュータの管理者権限が必要です。RStudio を管理者として実行するように設定してください。
  2. パッケージはできるだけ文字のあるドライブ(C: ドライブなど)のライブラリに保存してください。パスが 「\」(バックスラッシュ)で始まるライブラリは、できるだけ使用しないでください。
  3. rmarkdown パッケージは、「\」で始まるライブラリに保存しないでください。「\」で始まるライブラリに保存した場合、TinyTex や Pandoc に接続できなくなります。

49.2 管理者として RStudio を使用する

RStudio のアイコンを右クリックし、RStudio を開くと、「管理者として実行」のオプションが表示されます。お使いのコンピュータによっては、表示されない場合があります。その場合は、プロパティ(Properties)を開いてください。プロパティを開くと、「互換性(Compatibility)」オプションのあるウィンドウが表示されるので、「管理者として実行(Run as Administrator)」のチェックボックスにチェックを入れてください。

49.3 便利なコマンド

ネットワークドライブ上で R を使用している際に直面した問題のトラブルシューティングに役立つコマンドをいくつか以下に紹介します。

まず、R にインストール済みのパッケージが保存されている場所(ライブラリ)を知りたい場合は、以下のコードを実行するとライブラリのパスを確認できます。パスは、R がパッケージのインストール・読み込み・検索に使用している順序で表示されます。デフォルトライブラリを変更したい場合は、パスの順序を変更することでできます(2 つ下のコードを参照ください)。

# ライブラリの場所を表示する
.libPaths()                   # ライブラリパスを表示
                              # 注意: 表示されたパスには全てのパッケージが含まれているが、C: 等いくつかのドライブに保存されたパッケージを表示するためには、
                              # 管理者として RStudio を実行する必要がある場合もある
                              # (管理者として実行しない場合は、install packages libraryのドロップダウンには表示されない)

R がパッケージを検索する際に、「\\」で始まるライブラリや「D:」等の文字で始まる場所に保存されたライブラリを先に検索している場合は、R が検索するライブラリの順番を入れ替える必要があります。その場合は、以下のコードで .libPaths() の順序を変更することができます。

# ライブラリの順序を変更する
# 順序を変更することで、R がパッケージを検索する際の優先順位度が変更される。例えば、C: ドライブのライブラリを先に表示したい場合
myPaths <- .libPaths() # パッケージライブラリのパスをオブジェクトにアサインする
myPaths <- c(myPaths[2], myPaths[1]) # パスの順序を変更する
.libPaths(myPaths) # 変更した順序のパスを再度アサインする

R Markdown が Pandoc に接続する際にエラーが発生した場合は、以下のコードを使用して Pandoc が RStudio のどこにインストールされているかを確認できます。

# Pandoc を探す
Sys.getenv("RSTUDIO_PANDOC")  # Pandoc がどこにインストールされているか確認する

どのライブラリからパッケージを読み込んでいるかを知りたい場合は、以下のコードを実行してください。

# パッケージを探す
# ライブラリの場所が表示される(複数のライブラリに保存されている場合は、最初のライブラリが表示される)
find.package("rmarkdown", lib.loc = NULL, quiet = FALSE, verbose = getOption("verbose")) 

49.4 よくあるエラー

“Failed to compile…tex in rmarkdown” のエラーメッセージ

  • TinyTex がインストールされているか確認してください。インストールされていない場合は、C: ドライブに TinyTex をインストールしてください。TinyTex のインストール方法については、R の基礎 の章をご覧ください。
# tinytex がインストールされているか確認し、C: ドライブにインストールする
tinytex::install_tinytex()
tinytex:::is_tinytex() # TRUE と表示されるはず (コロンが3つ必要なことに注意)

“Internet routines cannot be loaded” のエラーメッセージ

例)Error in tools::startDynamicHelp() : internet routines cannot be loaded

  • 32-bit 版の RStudio を試してみてください。RStudio の Tools/Global Options から 32-bit 版の R Studioに切り替えることができます。
    • 注意:32-bit 版の RStudio が Tools/Global Options の R Sessions/R version に表示されない場合は、お使いの RStudio のバージョンが古い(v1.2)場合があります。
  • または、R をアンインストールし、32-bit 版の R をインストールしてください。

パッケージをインストールする時に、C: ライブラリが選択できない

  • 管理者として RStudio を実行してください。管理者として実行すると、C: ライブラリが表示されます。
  • RStudio を常に管理者として実行するように設定するには、RStudio アイコンを右クリックしてください。プロジェクトの RStudio アイコンをクリックして開かない R プロジェクトを開く場合に便利です。

以下の画像は、パッケージのインストール先のライブラリを手動で選択する方法を示しています。RStudio の「パッケージ (Packages)」パネルを開き、「インストール(Install)」をクリックすると表示されます。

Pandoc Error 1 が表示された

R Markdown ファイルをニット(knit)する際、「pandoc error 1」が表示された場合は、以下の方法で対処してください。

  • 複数のライブラリがある場合は、文字で始まるドライブ(C: ドライブ等)がライブラリの先頭になるように、ライブラリを並べ替えてください(前述の「便利なコマンド」セクションを参照してください)。
  • 上記の対処法は、インターネットが繋がっている時に筆者がローカルドライブで試し、成功した対処法です。
  • 詳細については、こちら( https://ciser.cornell.edu/rmarkdown-knit-to-html-word-pdf/ )をご覧ください。

Pandoc Error 83 が表示された

対象のファイルが見つからなかった時に表示されるエラーです。 例)can't find file...rmarkdown...lua...

解決法については、こちら( https://stackoverflow.com/questions/58830927/rmarkdown-unable-to-locate-lua-filter-when-knitting-to-word )をご覧ください。

原因としては、以下の 3 つが考えられます。

  1. Rmarkdown パッケージがインストールされていない
  2. Rmarkdown パッケージが見つからない
  3. 管理者権限に何かしら問題がある

R が rmarkdown パッケージファイルを見つけられないことが原因でエラーが発生している可能性があるので、rmarkdown パッケージがどのライブラリにインストールされているか確認してください(前述の「便利なコマンド」セクションのコードを参照ください)。アクセスできないライブラリにパッケージがインストールされている場合(例:「\\」で始まるライブラリ)は、パッケージを手動で C: ドライブまたは他の名前付きドライブのライブラリに移すことをおすすめします。rmarkdown パッケージは TinyTex インストールに接続する必要があるため、ネットワークドライブ上のライブラリには置かないでください。

Pandoc Error 61 が表示された

例)Error: pandoc document conversion failed with error 61 または Could not fetch...

  • RStudio を管理者として実行してください。(RStudio アイコンを右クリックし、「管理者として実行」を選択してください。詳細は、前述の「管理者として RStudio を実行する」セクションをご覧ください。)
  • アクセスできないライブラリにインストールされたパッケージは、C: ドライブ内のライブラリに移動してください。

LaTex に関するエラー

例)! Package pdftex.def Error: File 'cict_qm2_2020-06-29_files/figure-latex/unnamed-chunk-5-1.png' not found: using draft setting. または Error: LaTeX failed to compile file_name.tex.

Pandoc Error 127 が表示された

RAM(パソコンのメインメモリ)に関するエラーの可能性があります。実行中の R セッションをリスタート(re-start)してください。

ネットワークドライブの割り当てに関するエラー

ネットワークドライブの割り当て(マッピング)は、重大な問題を引き起こす場合があります。割り当てが必要な場合は、割り当てる前に情報システムを担当する部署に相談してください。

割り当て済のネットワークドライブにあるファイルを開く際にヒントになり得る Stack Overflow フォーラムのコメント を下記に引用します。

質問「割当済みのネットワークドライブにあるファイルを開く方法をおしえてください」に対する回答

  • まず、アクセスしようとしているネットワークドライブのロケーション(ネットワークアドレス)を確認します。
  • 次に、Windows のエクスプローラーを開き、左パネルにある「PC」を右クリックし、「ネットワークドライブの割当」を選択します。
  • 表示されたダイアログボックスで、先程確認したロケーション(ネットワークアドレス)をドライブレター付きのドライブとして設定します。
  • ロケーション(ネットワークアドレス)を直接指定し、ファイルを開く方法と、ドライブレター付きのネットワークドライブからファイルを開く方法の 2 通りの方法が準備できました。ドライブレター付きのネットワークドライブが機能します。

install.packages() に関するエラー

例)Error in install.packages : ERROR: failed to lock directory...

エラーメッセージに「lock directory」が含まれている場合、パッケージが保存されたライブラリを開き、ライブラリに「00LOCK」と名付けられたフォルダーがあるか確認してください。「00LOCK」フォルダーがあった場合の対処法は、以下の通りです。

  • 「00LOCK」フォルダーをライブラリから削除し、インストールに失敗したパッケージを再度インストールする。
  • pacman::p_unlock() を実行し、再度パッケージをインストールする。複数回の実行を必要とするかもしれない(pacman::p_unlock() を Rprofile に追加すると、R プロジェクトを開くたびに実行される)。
  • 管理者として RStudio を開き、1 つずつパッケージをインストールする。
  • 上記の 3 つの対処法のいづれも成功しなかった場合、インストールしたいパッケージを別のライブラリやフォルダー(Temp など)にインストールし、インストール後にパッケージが保存されたフォルダーを R がアクセスするライブラリに移す。