我正在编写一个通过命令行在R中使用pandoc的函数。如何使用R来检查是否安装了pandoc(我还假设它必须在路径上,这可能是Windows用户的问题)?
答案 0 :(得分:12)
我没有安装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
答案 1 :(得分:5)
这个建议完全基于我对这个问题的个人经验,RStudio似乎无法读取我的Ubuntu系统上.bashrc
文件中的内容。我使用here描述的cabal install pandoc
方法安装了Pandoc,因为我需要更多最新版本的Pandoc,而不是Ubuntu的软件包管理器。从终端运行R可以使用Sys.which
按预期检测Pandoc,但是当使用RStudio时,它不能。 我不知道这是否是Windows用户的问题,但不是!
在这种情况下,一种替代/解决方法实际上是创建一个典型路径的向量,您希望在其中找到Pandoc可执行文件(假设许多用户并不真正使用其中他们安装程序)。此信息也可在上面链接的安装页面以及Windows的典型C:\\PROGRA~1\\...
路径中获得。因此,您可能会将以下内容作为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)
)和已经分享的其他一些想法。
答案 2 :(得分:4)
我想您可以使用Sys.which
并查看结果是否为空字符串。
pandoc.location <- Sys.which("pandoc")
if(pandoc.location == ""){
print("pandoc not available")
}else{
print("pandoc available")
}