在animation包的SaveGIF函数中找不到'convert'。

4
我在使用库(animation)中的SaveGIF函数时遇到了麻烦。该函数给出了以下错误信息:
cmd.fun(sprintf("%s --version", convert), intern = TRUE, ignore.stdout = !interactive(), : unused argument(s) (ignore.stdout = !interactive()) I cannot find ImageMagick with convert = 'convert' NULL Warning message: In im.convert(img.files, output = movie.name, convert = convert, : Please install ImageMagick first or put its bin path into the system PATH variable 让我困惑的是,我确实在我的系统上拥有convert,所以我期望SaveGIF能够毫无问题地找到它:
me@my-laptop:~$ convert --version Version: ImageMagick 6.5.7-8 2010-12-02 Q16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2009
如何将convert的bin路径添加到系统PATH变量中?
编辑:我正在使用Ubuntu,而不是Windows。

这个问题很旧了,但我想为那些未来寻找答案的人添加一条备注。尽管路径正确设置为包括Imagemagick目录,但我在Windows机器上遇到了同样的问题。对我有用的是这个解决方案,但如果有同样问题的人能确认这个解决方案是否适用于他们,那就太好了:https://dev59.com/cYXca4cB1Zd3GeqPEzBC#28710980 - coffeinjunky
4个回答

2
通常在Linux下我们不需要手动设置PATH变量。我也使用Ubuntu,但是我无法重现你的错误。请问你使用的是哪个版本的R?
> sessionInfo()
R version 2.13.0 (2011-04-13)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=C              LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] animation_2.0-4    

据我所见,错误来自于函数system()而不是无法找到convert。参数ignore.stdout在R 2.12.1中引入,因此您必须使用较低版本的R。当前版本是2.13.0,我建议您升级到最新版本。有关如何使用CRAN更新R,请参见http://cran.r-project.org/bin/linux/ubuntu/

我在OS X,R 3.1.1上看到了这个错误,并确认我像OP一样有convert。有什么建议吗? - Max Ghenis
@MaxGhenis OP使用的是Ubuntu,而您没有告诉我们您的OS X版本。如果它是Yosemite,我也不会感到惊讶:https://dev59.com/wITba4cB1Zd3GeqP6nhA - Yihui Xie

2
您可能没有编辑您的PATH变量。在Windows 7上(但早期版本也可能适用),请执行以下操作: - 开始菜单 - 右键单击计算机->属性 - 高级系统设置 - 环境变量 然后,在“系统变量”下找到变量“path”,选择它并单击“编辑”。 您需要查看变量值的内容(可以将其复制到文本编辑器中以便更好地阅读)。它应该包含指向imagemagick的链接,并用分号与其他变量分隔开。对于我来说,imagemagick的路径是: C:\Program Files\ImageMagick-6.6.7-Q16 确保仅添加它,而不更改路径变量中的任何其他内容。使用分号添加它。

抱歉,我在原帖中应该注明:我使用的是Ubuntu而不是Windows。 - Adrian
啊,我以为是 Windows,因为路径变量错误在 Windows 上相当常见。 - Sacha Epskamp

1

您可以使用 system("which convert", intern=TRUE) 命令找到您的转换函数所在位置,然后将其(可能)添加到您的 PATH 变量中。

Sys.setenv(PATH=...)


我尝试过了,但没有成功;system("which convert", intern=TRUE) 返回 "/usr/bin/convert",我运行了 Sys.setenv(PATH="/usr/bin/convert"),然而执行 saveGIF(brownian.motion()) 仍然出现相同的错误提示:"请先安装 ImageMagick 或将其 bin 路径添加到系统 PATH 变量中"。 - Adrian
我认为应该使用Sys.setenv(PATH="/usr/bin")。运行后,尝试使用Sys.getenv()$PATH查看返回结果。 - Greg

0

在尝试了所有这些修复方法以及这些这些都没有成功之后,我使用了替代软件来将png文件转换为已成功创建的saveHTML。这里描述了几个程序在这里。作为Windows用户,我发现该网站中包含的VirtualDub简单指南可以快速完成此任务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接