コマンドラインからRでpandocを使用する関数を書いています。Rを使用してpandocがインストールされているかどうかを確認するにはどうすればよいですか(Windowsユーザーにとって問題になる可能性のあるパス上にある必要があると思います)。
3 に答える
インストールするpandocはありませんが、通常、プログラムが次のようにインストールされているかどうかをテストします。
pandoc.installed <- system('pandoc -v')==0
たとえば、Javaがインストールされているかどうかをテストするには:
java.installed <- system('java -version') ==0
java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
> java.installed
[1] TRUE
Sys.which
結果が空の文字列であるかどうかを使用して確認できると思います。
pandoc.location <- Sys.which("pandoc")
if(pandoc.location == ""){
print("pandoc not available")
}else{
print("pandoc available")
}
.bashrc
この提案は、RStudioがUbuntuシステム上のファイルの内容を読み取れないように見えるというこの質問に対する私の個人的な経験に完全に基づいています。Ubuntuのパッケージマネージャーで利用できるよりも新しいバージョンのPandocから必要な機能があったため、ここでcabal install pandoc
説明する方法を使用してPandocをインストールしました。ターミナルからRを実行すると、を使用して期待どおりにPandocを検出できましたが、RStudioを使用した場合は検出できませんでした。これがWindowsユーザーの問題なのかどうかはわかりませんが!Sys.which
この場合の代替/回避策の1つは、Pandoc実行可能ファイルが見つかると予想される典型的なパスのベクトルを実際に作成することです(多くのユーザーがプログラムをインストールする場所を実際にいじくり回していないという前提の下で)。この情報は、上記のリンク先のインストールページに加えて、C:\\PROGRA~1\\...
Windowsの一般的なパスからも入手できます。したがって、Pandocへのパスとして次のようなものがあります。
myPaths <- c("pandoc",
"~/.cabal/bin/pandoc",
"~/Library/Haskell/bin/pandoc",
"C:\\PROGRA~1\\Pandoc\\bin\\pandoc")
# Maybe a .exe is required for that last one?
# Don't think so, but not a regular Windows user
これはSys.which()
(たとえばSys.which(myPaths)
)や、すでに共有されている他のアイデアのいくつかで使用できます。
- 最初のオプションが一意に一致する場合、問題はありません。Pandocへのシステムコールを直接使用できます。
- 他のオプションのいずれかが一意に一致する場合は、「pandoc」だけでなく、システムコールの実行可能ファイルへのフルパスを貼り付けるように関数を記述できます。
- 最初のオプションと他のオプションのいずれかが一致する場合は、最初のオプションを選択して続行できます。
- 一致するものがない場合は、Pandocインストールへのパスをユーザーに求めるか、Pandocのインストール方法に関するメッセージを提供します。