我有一个使用pdfcrop
的小插图。
这并不是在每台计算机或OS上都可用:R维护人员告诉我pdfcrop
在他们的Debian系统上,但显然不是在其他系统上。因此,我想在小插图中包含一些逻辑,以弄清楚该程序是否可用,并在可能的情况下使用它(我正在使用knitr
来构建小插图,并使用knit_hooks$set(crop = hook_pdfcrop)
来激活它)。
我知道我可以使用.Platform
来获取操作系统,如果我使用的是unix,则可以通过which pdfcrop
使用system()
来告诉我程序的安装位置/位置,但是我不知道如何使此过程适用于OSX ,Linux,Windows等操作系统,但我不确定如何正确获取which
的返回值或其他平台的相应命令。
换句话说,我正在尝试执行类似question的操作,但是我没有检查R
软件包,而是在检查非R程序。我之所以转向SO,是因为我既没有知识也没有平台来检查它。
最佳答案
R为此有一个函数Sys.which()
。用其帮助页面的字眼来说,它是“系统命令“哪个”或Windows上的仿真的界面”。
在我自己的Windows计算机上,对它的调用如下所示:
Sys.which("pdfcrop")
# pdfcrop
# "C:\\PROGRA~2\\MIKTEX~1.9\\miktex\\bin\\pdfcrop.exe"
要测试可执行文件是否存在,可以执行以下操作:
Sys.which("pdfcrop") != ""
# pdfcrop
# TRUE
Sys.which("pdfpop") != ""
# pdfpop
# FALSE
关于r - 平台中立的方式来在创建晕影时检查程序是否存在(例如pdfcrop),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23996180/