如何解决“无法找到GhostScript可执行文件以运行检查缩小尺寸”错误的包裹检查R?

时间:2016-05-12 21:21:26

标签: r ghostscript setenv

在Revolution R企业控制台中,

devtools::check("C:/Users/User/Documents/Revolution/mypackage")

产生

checking sizes of PDF files under 'inst/doc' ... NOTE
Unable to find GhostScript executable to run checks on size reduction

没有任何其他警告/错误/备注。所以,(尽管AFAIK这个注释对于最终检查并不重要),我想摆脱这个警告(因为我想将.PDF文件放到R外部生成的mypackage\inst\doc文件夹中。)

我的笔记本中安装了Ghostscript。我得到了帮助:

> help("R_GSCMD")
R_GSCMD: Optional. The path to Ghostscript, used by dev2bitmap, bitmap and embedFonts. 
Consulted when those functions are invoked. 
Since it will be treated as if passed to system, spaces and shell metacharacters should be escaped.


> Sys.getenv("R_GSCMD")
[1] ""

我做了什么(又犯了错误)是:

> Sys.setenv("R_GSCMD") <- "C:\\Program Files (x86)\\gs\\gs9.19\\bin\\gswin32c.exe"
Error in Sys.setenv("R_GSCMD") <- "C:\\Program Files (x86)\\gs\\gs9.19\\bin\\gswin32c.exe" : 
  target of assignment expands to non-language object

加深后,我发现:[“当一个人试图为不存在的变量赋值,或者R不能作为名称处理时,就会发生这些错误。(名称是一个变量类型,变量名。“]

我基本上要做的是将我的GS可执行文件(C:\ Program Files(x86)\ gs \ gs9.19 \ bin \ gswin32c.exe)设置为“R_GSCMD”。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

在咨询?Sys.setenv时,它确认了我的期望,即呼叫应该是:

Sys.setenv(R_GSCMD = "C:\\Program Files (x86)\\gs\\gs9.19\\bin\\gswin32c.exe")

答案 1 :(得分:1)

由于gs版本一直在变化,因此您可能会喜欢一些R脚本!

system.partition = 'c:'
dirs = c('Program Files', 'Program Files (x86)')
for (dir in dirs) {
    dir.list = list.dirs(file.path(system.partition, dir), recursive = FALSE)
    GsinList = grepl(pattern = 'gs', x = dir.list)
    if (sum(GsinList) > 0) {
        gsDirectory = which(GsinList == TRUE)
        GsExeFiles = list.files(
            dir.list[gsDirectory],
            recursive = TRUE,
            pattern = 'gswin',
            include.dirs = TRUE,
            full.names = TRUE
        )[1]
        message('Gs found! ~> ',GsExeFiles)
        Sys.setenv(R_GSCMD = GsExeFiles)
        break
    }
}


Gs found! ~> c:/Program Files/gs/gs9.21/bin/gswin64.exe