【问题标题】:R supress console output of a system or shell commandR 抑制系统或 shell 命令的控制台输出
【发布时间】:2017-12-21 23:00:22
【问题描述】:

我有这个 windows 批处理文件,我使用 shell() 命令从 R 调用它。该批处理文件进行一些计算并将它们写入磁盘和屏幕上。我只对磁盘输出感兴趣。我无法更改批处理文件。

批处理文件可能有点像:

@echo off
echo 1 + 2
@echo 1 + 2 > C:\TEMP\batchoutput.txt 
exit

我试过了

shell("batchfile.bat", invisible = TRUE)

1 + 2

shell("batchfile.bat", show.output.on.console = FALSE)

系统错误(cmd,实习生 = 实习生,等待 = 等待 | 实习生,show.output.on.console = 等待,: 由多个实际参数匹配的形式参数“show.output.on.console”

system("batchfile.bat", invisible = T)

1 + 2

system("batchfile.bat", show.output.on.console = F)

警告信息: 运行命令 'C:\TEMP\batchfile.bat' 的状态为 1

有没有办法抑制 R 上的控制台输出?

【问题讨论】:

  • system("batchfile.bat", wait = FALSE) 成功了
  • 它成功地抑制了屏幕上的输出。不幸的是,批处理没有正确执行。它不会将文件写入磁盘。
  • wait = FALSE 不能与其他脚本一起使用,@smoff 正确
  • invisible(shell(cmd = "batchfile.bat", intern = TRUE)) 似乎有效。
  • 它也返回一个Warning message,但你可以用options(warn=-1)抑制它

标签: r system-calls


【解决方案1】:
options(warn = -1)
shell("You command")
options(warn = 0)

【讨论】:

  • 通常不鼓励仅使用代码的答案。请提供更多背景信息,说明为什么这有助于 OP 解决问题。
  • 对我来说这看起来很不言自明。警告关闭,shell 命令,警告开启。我理解这是气馁,并会同意。但有些答案在代码本身解释的时候就不需要再评论了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 2014-07-18
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多