r - Windows 中的多个 shell 命令

标签 r

我正在尝试在 R 中复制一个 shell 命令,但无法弄清楚如何将命令串在一起。这只是返回工作文件夹的内容( system() 由于某种原因失败):

> shell("dir")
 Volume info ..
 Directory of E:\Documents\R
 contents are listed..

现在让我们尝试导航到 C 驱动器并运行 dir (不使用明显的 dir C: )..
> shell("cd C:")
C:\
> shell("dir")
 Volume in drive E is GT
 etc..

所以似乎命令不能单独输入,因为 shell 不记得工作目录。所以..
> (cmd = "cd C:
+ dir")
[1] "cd C:\ndir"
> shell(cmd)
C:\

运气不好,因为没有报告 C: 文件夹。我尝试过的其他方法也失败了。感谢任何想法。

最佳答案

The documentation解释原因 system不起作用:它直接在 Windows 上执行命令,而不先生成 shell。
shell (或者更好, system2 )是要走的路,但正如您所注意到的,shell将始终产生一个新的 shell,这样对环境的更改就不会延续。 system2也不会直接工作,因为它引用了它的命令(因此不允许链接命令)。

正确 在这种情况下的解决方案是不使用 shell 命令来更改目录。使用 setwd反而:

setwd('C:')
system2('dir')

如果要在执行命令后重置工作目录,请使用以下命令:
local({
    oldwd = getwd()
    on.exit(setwd(oldwd))
    setwd('C:')
    system2('dir')
})

关于r - Windows 中的多个 shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20974317/

相关文章:

python - 比较 2 个文件并提取不同的行

r - R中连续总结2次正确吗?

r - 如何在 rmarkdown 导航栏中使用子菜单?

r - 为多个组生成具有不同颜色的ggplot2 boxplot

R - 将每个向量元素递归地添加到数据帧的变量中

r - 如何向 R 列表中的多个数据帧添加新行

r - 在 DF 中查找 0,1 变量并设置为具有水平顺序的因子

regex - 将字符串分成 2 个字符的组,以冒号分隔(1330 到 13 :30) in R

r - 从 R 中的文件夹创建 zip 文件

r - R 中的简化 dput()