我正在编写一个通过命令行在 R 中使用 pandoc 的函数。如何使用 R 检查是否安装了 pandoc(我还假设它必须在路径上,这对 Windows 用户来说可能是个问题)?
问问题
3915 次
3 回答
13
我没有要安装 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
于 2013-02-19T18:24:28.943 回答
5
这个建议完全基于我对这个问题的个人经验,即 RStudio 似乎无法读取我.bashrc
在 Ubuntu 系统上的文件中的内容。我已经使用此处cabal install pandoc
描述的方法安装了 Pandoc,因为我需要从更新版本的 Pandoc 中获得的功能比 Ubuntu 的包管理器提供的功能。从终端运行 R 可以按预期使用 检测 Pandoc ,但是在使用 RStudio 时,它不能。我不知道这是否是 Windows 用户的问题!Sys.which
在这种情况下,一种替代/解决方法实际上是创建一个典型路径的向量,您希望在其中找到 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 的消息。
于 2013-02-19T19:41:59.843 回答
5
我想您可以使用Sys.which
并查看结果是否为空字符串。
pandoc.location <- Sys.which("pandoc")
if(pandoc.location == ""){
print("pandoc not available")
}else{
print("pandoc available")
}
于 2013-02-19T18:21:06.880 回答