检查程序是否已安装

Tyl*_*ker 8 r pandoc

我正在编写一个通过命令行在R中使用pandoc的函数.如何使用R来检查是否安装了pandoc(我还假设它必须在路径上,这可能是Windows用户的问题)?

ags*_*udy 12

我没有pandoc来安装,但一般我测试一个程序是否安装如下:

pandoc.installed <- system('pandoc -v')==0
Run Code Online (Sandbox Code Playgroud)

例如,测试是否安装了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
Run Code Online (Sandbox Code Playgroud)


Das*_*son 5

我想您可以使用Sys.which并查看结果是否为空字符串。

pandoc.location <- Sys.which("pandoc")
if(pandoc.location == ""){
    print("pandoc not available")
}else{
    print("pandoc available")
}
Run Code Online (Sandbox Code Playgroud)


A5C*_*2T1 5

这个建议完全基于我对这个问题的个人经验,RStudio似乎无法读取.bashrc我的Ubuntu系统文件中的内容.我已经使用这里cabal install pandoc描述的方法安装了Pandoc ,因为我需要更新版Pandoc的功能,而不是Ubuntu的包管理器.从终端运行R可以使用预期检测Pandoc Sys.which,但是当使用RStudio时,它不能.我不知道这是否是Windows用户的问题,但不是!

在这种情况下一个替代/解决方法实际上是创造的,你所期望的Pandoc可执行文件被发现(推定,很多用户并不真正与futz围绕下的典型路径矢量那里他们安装程序).此信息同样可在上面链接的安装页面上找到,另外还有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
Run Code Online (Sandbox Code Playgroud)

您可以使用哪些Sys.which()(例如Sys.which(myPaths))和已经共享的其他一些想法.

  • 如果第一个选项是唯一匹配的,则没有问题:您可以直接使用系统调用Pandoc.
  • 如果任何其他选项唯一匹配,您可以编写函数,以便在系统调用中粘贴可执行文件的完整路径,而不仅仅是"pandoc".
  • 如果匹配第一个选项和任何其他选项,则只需选择第一个选项并继续.
  • 如果没有匹配,则提示用户输入其Pandoc安装的路径,或提供有关如何安装Pandoc的消息.