R语言中的双引号与字符串转义问题
R语言执行系统命令时参数带空格的问题解决
你遇到的问题是因为在R里用转义引号拼接字符串后,传给system()时,转义符会被传递给shell,导致shell识别到的是带\的引号,而不是把my options作为一个完整参数。
给你两种解决办法:
方法1:用system2()(推荐,跨平台更稳妥)
system2()专门把命令和参数分开处理,不需要手动拼接引号,自动帮你处理参数里的空格:
system2("my_cmd", args = c("--options", "my options"))
这样终端收到的命令就是你期望的my_cmd --options "my options",参数会被正确识别为一个整体。
方法2:手动拼接字符串时用单引号(适合必须用system()的场景)
如果一定要用system(),可以用单引号包裹带空格的参数(前提是参数本身不含单引号),这样shell能正确解析:
my_cmd <- paste0("my_cmd --options 'my options'") system(my_cmd)
原来的写法里,你在R里用\"转义双引号,生成的字符串在传递给shell时,\会被保留,导致shell看到的是\"my options\",这就是为什么终端显示的命令带转义符的原因。
内容的提问来源于stack exchange,提问作者monkey
相关产品推荐
相关产品推荐

