system()和shell()之间的区别

tak*_*kje 8 windows r

在R for Windows上,有两个函数可以调用系统命令.一方面,可以使用system()(或更新的system2()函数)来执行系统命令.另一方面,可以使用shell().在我看来,他们都应该这样做.他们之间有什么区别?

通过阅读文档,shell被描述为一个更加用户友好的系统包装器.我可以看到两者都有不同的参数,但我并没有真正看到调用shell更加用户友好的观点.除此之外,我看不出任何其他差异,甚至执行一些基本代码也会得到相同的结果(引号除外).

> system('ECHO "test"')
test
> shell('ECHO "test"')
"test"
Run Code Online (Sandbox Code Playgroud)

使用一个而不是另一个的论点是什么?

mpj*_*dem 3

如果您的系统命令被接受CMD.EXE(Windows 上默认),则没有太大区别。但是,如果您想使用不同的 shell(例如sh执行非 CMD.exe 脚本),它可以让您不必为每个系统命令添加前缀。它还将有助于解决相关问题,例如必须将每个/for切换出去\