6

我正在尝试使用调用从 R 中调用一个名为AMDIS的 Windows 程序

system("C:/NIST08/AMDIS32/AMDIS_32.exe /S C:/Users/Ento/Documents/GCMS/test_cataglyphis_iberica/queens/CI23_Q_120828_01.CDF")

为了对/S名为 的文件进行分析(使用开关指定)CI23_Q_120828_01.CDF,但似乎无论我尝试什么,文件都没有正确加载,大概是因为选项没有传递。有谁知道我可能做错了什么?

现在这个命令要么

  1. 什么都不做,
  2. 使 AMDIS 弹出,但它不加载我指定的文件
  3. 给我错误

    警告信息:

运行命令“C:/NIST08/AMDIS32/AMDIS_32.exe /SC:/Users/Ento/Documents/GCMS/test_cataglyphis_iberica/queens/CI23_Q_120828_01.CDF”的状态为 65535

(我不知道是什么导致了同一命令的这些不同结果)

(第 8 页描述AMDIS 命令行选项)

干杯,
汤姆

编辑:
发现它与正斜杠和反斜杠有关 - 运行

system("C:\\NIST08\\AMDIS32\\AMDIS_32.EXE C:\\Users\\Ento\\Documents\\GCMS\\test_cataglyphis_iberica\\queens\\CI23_Q_120828_01.CDF /S /E")

似乎工作 - 谢谢大家的建议!

4

1 回答 1

8

你听说过bquote, noquote, sQuote, dQuote,quote enquoteQuotes, 那么现在见面shQuote!!! :-)

这个小函数调用用于格式化要传递给操作系统外壳的字符串。就我个人而言,我发现我可以卷入反斜杠逃离地狱,并shQuote拯救我。只需像在您选择的命令行上一样键入字符串('sh'对于 Unix 类似的bashcsh对于 C-shell 和'cmd'对于 Windows shell)shQuote,它会格式化它以R使用系统调用:

shQuote("C:/NIST08/AMDIS32/AMDIS_32.exe /S C:/Users/Ento/Documents/GCMS/test_cataglyphis_iberica/queens/CI23_Q_120828_01.CDF" , type = "cmd" )
#[1] "\"C:/NIST08/AMDIS32/AMDIS_32.exe /S C:/Users/Ento/Documents/GCMS/test_cataglyphis_iberica/queens/CI23_Q_120828_01.CDF\""

更一般地说,您可以shQuote像这样使用:

system( shQuote( "mystring" , type = c("cmd","sh") ) , ... )
于 2013-04-27T11:15:28.097 回答