我正在尝试使用调用
从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
开关指定),但似乎无论我尝试什么文件都没有正确加载,大概是因为选项不会传递。有没有人知道我可能做错了什么?
现在这个命令
给我错误
警告讯息:
运行命令'C:/NIST08/AMDIS32/AMDIS_32.exe / S. C:/Users/Ento/Documents/GCMS/test_cataglyphis_iberica/queens/CI23_Q_120828_01.CDF” 状态为65535
(我不知道是什么导致同一命令的这些不同结果)
(AMDIS命令行选项在第8页的here中描述)
干杯,
汤姆
编辑:
发现它与前锋vs反斜杠有关 - 正在运行
system("C:\\NIST08\\AMDIS32\\AMDIS_32.EXE C:\\Users\\Ento\\Documents\\GCMS\\test_cataglyphis_iberica\\queens\\CI23_Q_120828_01.CDF /S /E")
似乎有效 - 谢谢大家的建议!
答案 0 :(得分:8)
您听说过bquote
,noquote
,sQuote
,dQuote
,quote
enquote
和Quotes
,以及现在见shQuote
!!! :-)
这个小函数调用用于格式化要传递给操作系统shell的字符串。就个人而言,我发现我可以卷入逃避地狱的反斜杠,shQuote
拯救了我。只需在您选择的命令行上输入字符串('sh'
用于Unix,例如bash
,csh
用于C-shell,'cmd'
用于Windows shell)wihtin 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") ) , ... )