【问题标题】:Call a variable in a system command在系统命令中调用变量
【发布时间】:2018-07-08 07:44:18
【问题描述】:

我在 R 脚本中调用 image magick,它工作正常(见第 1 行)。但是,我想让它从 R 中调用一个变量,并根据这个变量更改输出文件的名称。我试图将它粘贴到系统命令中(见第 2 行),但它似乎不起作用。有谁知道怎么做?

第 1 行:

    system("magick convert -delay 40 *.png K-10 trail_cost - 3 K.gif")  # make a gif of all the photos 

第 2 行:

    system(paste("magick convert -delay 40 *.png K - ", K, "trail_cost - ", trail_cost, ".gif"))  # make a gif of all the photos 

【问题讨论】:

  • 你有- delay而不是-delay(额外的空格)有问题吗?
  • 好主意,但仍然给出错误消息:转换:无法打开图像'K':没有这样的文件或目录@error/blob.c/OpenBlob/3109。
  • K - "后面多了一个空格,应该是K -"
  • 两个想法: 1/ 在命令之外创建最终文件名,将其保存到变量并在命令中使用该变量。 2/你不应该在文件名中有空格,除非它全部包含在“”中。我不明白你为什么要在文件名中包含空格,因为这会导致其他问题。看起来你正在使用 V7,所以 magick 替换了 convert。

标签: r imagemagick system imagemagick-convert


【解决方案1】:

你有一些额外的空格,我会使用 paste0 并在运行前检查是否相同:

K = 10
trail_cost = "3 K"

# check if identical before running system
identical("magick convert -delay 40 *.png K-10 trail_cost - 3 K.gif",
          paste0("magick convert -delay 40 *.png K-", K, " trail_cost - ", trail_cost, ".gif"))
# [1] TRUE

注意:避免在文件名中使用空格。

K = 10
trail_cost = 3

paste0("magick convert -delay 40 *.png K-", K, "trail_cost-", trail_cost, "K.gif")

【讨论】:

    猜你喜欢
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    相关资源
    最近更新 更多