Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-向系统发送两行命令_R_Command_System - Fatal编程技术网

R-向系统发送两行命令

R-向系统发送两行命令,r,command,system,R,Command,System,我正在OS X系统上使用ImageMagick命令创建一个2x2面板,该面板由我磁盘上的四个.png图形组成: convert \( image1.png image2.png -append \) \ \( image3.png image4.png -append \) +append result.png 当粘贴到my terminal时,系统会调整上述命令,在第二行开始处接收一个: convert \( image1.png image2.png -append \) \ > \

我正在OS X系统上使用
ImageMagick
命令创建一个2x2面板,该面板由我磁盘上的四个
.png
图形组成:

convert \( image1.png image2.png -append \) \
\( image3.png image4.png -append \) +append result.png
当粘贴到my terminal时,系统会调整上述命令,在第二行开始处接收一个

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

问题是:如何使用R将特定的两行命令发送到系统?

在ImageMagick命令中,删除第一行末尾的新行\并使该命令仅为单行上的一个长命令,如下所示:

convert \( image1.png image2.png -append \) \( image3.png image4.png -append \) +append result.png

这将避免出现>提示,并允许您的命令向前传递,而不会被ImageMagick命令中的>提示所迷惑。请删除第一行末尾的新行\并使命令仅为单行上的一个长命令,如下所示:

convert \( image1.png image2.png -append \) \( image3.png image4.png -append \) +append result.png

这样可以避免出现>提示,并允许您的命令向前传递,而不会被>提示弄糊涂。根据对这个问题的评论,我最终找到了答案。这是我在R中使用的代码:

system(paste0("convert \\( img1.png img2.png -append \\) \\( img3.png img4.png -append \\) +append result.png"))

根据对这个问题的评论,我最终找到了答案。这是我在R中使用的代码:

system(paste0("convert \\( img1.png img2.png -append \\) \\( img3.png img4.png -append \\) +append result.png"))
使用包装并制作一个可复制的示例,它可能看起来像

库(tidyverse)
图书馆(magick)
#制作和制作相同的示例图像
序号(4)%>%
映射(~data_frame(x=seq(.x)))%>%
walk({ggplot(.x,aes(x,x))+geom_point();ggsave(paste0('plot',max(.x),'.svg'))
#阅读图像
图像使用包装并制作一个可复制的示例,它可能看起来像

库(tidyverse)
图书馆(magick)
#制作和制作相同的示例图像
序号(4)%>%
映射(~data_frame(x=seq(.x)))%>%
walk({ggplot(.x,aes(x,x))+geom_point();ggsave(paste0('plot',max(.x),'.svg'))
#阅读图像

图像a。您不需要将其作为单独的行运行,除非它是第二个命令,您可以在第二次调用中传递该命令。Bshell行末尾的
\
转义换行符(作为额外的空白被忽略),因此如果您真的想这样传递它,只需添加一个换行符(
\n
),例如
系统('echo$((2+\n 3)))
)。C这一切都有点不必要。D解决此问题的最佳方法是首先使用
mfrow
或类似工具将它们绘制在网格上。感谢@alistaire的建议。关于
magick
软件包有什么特别的提示吗?我安装了它,但我唯一能做的就是把这些数字组合成一行。。。找不到帮助我创建
m x n
面板的文档…a。您不需要将其作为单独的行运行,除非它是第二个命令,您可以在第二次调用中传递该命令。Bshell行末尾的
\
转义换行符(作为额外的空白被忽略),因此如果您真的想这样传递它,只需添加一个换行符(
\n
),例如
系统('echo$((2+\n 3)))
)。C这一切都有点不必要。D解决此问题的最佳方法是首先使用
mfrow
或类似工具将它们绘制在网格上。感谢@alistaire的建议。关于
magick
软件包有什么特别的提示吗?我安装了它,但我唯一能做的就是把这些数字组合成一行。。。找不到帮助我创建
m x n
面板的文档…感谢您提供此解决方案。它有点慢,可能是因为我的
.png
文件的分辨率很高,但对于我的问题,它工作得很好。感谢您提供此解决方案。它有点慢,可能是因为我的
.png
文件的分辨率很高,但对于我的问题来说,它工作得很好。