【发布时间】:2017-11-05 17:53:06
【问题描述】:
我在 OS X 系统上使用 ImageMagick 命令创建一个 2x2 面板,其中包含我磁盘上的四个 .png 图形:
convert \( image1.png image2.png -append \) \
\( image3.png image4.png -append \) +append result.png
当粘贴到我的终端时,上面的命令会被系统调整,在第二行的开头收到一个>:
convert \( image1.png image2.png -append \) \
> \( image3.png image4.png -append \) +append result.png
生成的图形如下所示:
我正在尝试使用以下命令从 R 中重现最后一条命令:
> line1 <- paste0(" convert \\(", " img1.png img2.png -append \\)", " \\")
> line2 <- paste0(" < \\(", " img3.png img4.png -append \\) ", "+append result.png")
> cat(paste(line1, line2, sep='\n'))
convert \( img1.png img2.png -append \) \
< \( img3.png img4.png -append \) +append result.png
显然,cat 的结果是我需要的,但我找不到将其发送到系统的正确方法。我尝试将其与system 结合使用,但出现错误:
system(cat(paste(line1, line2, sep='\n')))
Error in system(cat(paste(line1, line2, sep = "\n"))) :
non-empty character argument expected
问题是:如何使用 R 将特定的两行命令发送到系统?
【问题讨论】:
-
a. 您不需要将它作为单独的行运行,除非它是第二个命令,您可以在第二个调用中传递该命令。 b. shell 行末尾的
\转义换行符(作为多余的空格被忽略),所以如果你 真的 想要这样传递它,只需添加一个换行符 (\n),例如system('echo $((2+ \n 3))')。 c. Themagickpackage 使这一切都变得不必要了。 d. 解决此问题的最佳方法是首先使用mfrow或类似名称将它们绘制在网格上。 -
感谢@alistaire 的建议。关于
magick包的任何特别提示?我安装了它,但我唯一能做的就是将这些数字连续组合起来......找不到帮助我创建m x n面板的文档......