我有一个使用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/

10-11 13:59