r - 在 R 中禁用和启用输出
问题描述
有没有办法阻止命令打印任何输出?
我正在使用nnet
包中具有相同名称的函数,它打印了一些我不需要的信息,在我自己的程序的输出中产生噪音。我发现使用参数trace=FALSE
函数会安静地运行,但现在我想知道如果函数不接受这样的参数会发生什么。
换句话说,是否可以暂时禁用 R 中的输出?
编辑
更具体地说,我的意思是标准输出,即您使用print
. 例如,像这样:
print("a")
disable_output()
print("b")
enable_output()
print("c")
具有以下输出:
[1] "a"
[1] "c"
解决方案
我认为您只能将全局输出转移到一个文件(我不知道您是否可以完全禁用它)。您可以将?sink
其视为起点。
另一方面,您可以使用:
?capture.output
: 评估其参数,并将输出作为字符串返回或发送到文件。
和
?invisible
:返回对象的(临时)不可见副本。
?force
要编写一个评估其参数而不抛出任何(标准)输出的函数(注意,包含在函数体中以强制评估其参数可能很有用):
invisible(capture.output(print("foo")))
without_output <- function(x) {
invisible(capture.output(force(x)))
}
without_output(print("foo"))
由reprex 包(v0.3.0)于 2020 年 9 月 7 日创建
devtools::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#> setting value
#> version R version 4.0.2 (2020-06-22)
#> os Ubuntu 20.04.1 LTS
#> system x86_64, linux-gnu
#> ui X11
#> language (EN)
#> collate en_US.UTF-8
#> ctype en_US.UTF-8
#> tz Europe/Rome
#> date 2020-09-07
#>
#> ─ Packages ───────────────────────────────────────────────────────────────────
#> package * version date lib source
#> assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.0.2)
#> backports 1.1.9 2020-08-24 [1] CRAN (R 4.0.2)
#> callr 3.4.3 2020-03-28 [1] CRAN (R 4.0.2)
#> cli 2.0.2 2020-02-28 [1] CRAN (R 4.0.2)
#> crayon 1.3.4 2017-09-16 [1] CRAN (R 4.0.2)
#> desc 1.2.0 2018-05-01 [1] CRAN (R 4.0.2)
#> devtools 2.3.1 2020-07-21 [1] CRAN (R 4.0.2)
#> digest 0.6.25 2020-02-23 [1] CRAN (R 4.0.2)
#> ellipsis 0.3.1 2020-05-15 [1] CRAN (R 4.0.2)
#> evaluate 0.14 2019-05-28 [1] CRAN (R 4.0.2)
#> fansi 0.4.1 2020-01-08 [1] CRAN (R 4.0.2)
#> fs 1.5.0 2020-07-31 [1] CRAN (R 4.0.2)
#> glue 1.4.2 2020-08-27 [1] CRAN (R 4.0.2)
#> highr 0.8 2019-03-20 [1] CRAN (R 4.0.2)
#> htmltools 0.5.0 2020-06-16 [1] CRAN (R 4.0.2)
#> knitr 1.29 2020-06-23 [1] CRAN (R 4.0.2)
#> magrittr 1.5 2014-11-22 [1] CRAN (R 4.0.2)
#> memoise 1.1.0 2017-04-21 [1] CRAN (R 4.0.2)
#> pkgbuild 1.1.0 2020-07-13 [1] CRAN (R 4.0.2)
#> pkgload 1.1.0 2020-05-29 [1] CRAN (R 4.0.2)
#> prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.0.2)
#> processx 3.4.3 2020-07-05 [1] CRAN (R 4.0.2)
#> ps 1.3.4 2020-08-11 [1] CRAN (R 4.0.2)
#> R6 2.4.1 2019-11-12 [1] CRAN (R 4.0.2)
#> remotes 2.2.0 2020-07-21 [1] CRAN (R 4.0.2)
#> rlang 0.4.7 2020-07-09 [1] CRAN (R 4.0.2)
#> rmarkdown 2.3 2020-06-18 [1] CRAN (R 4.0.2)
#> rprojroot 1.3-2 2018-01-03 [1] CRAN (R 4.0.2)
#> sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 4.0.2)
#> stringi 1.4.6 2020-02-17 [1] CRAN (R 4.0.2)
#> stringr 1.4.0 2019-02-10 [1] CRAN (R 4.0.2)
#> testthat 2.3.2 2020-03-02 [1] CRAN (R 4.0.2)
#> usethis 1.6.1 2020-04-29 [1] CRAN (R 4.0.2)
#> withr 2.2.0 2020-04-20 [1] CRAN (R 4.0.2)
#> xfun 0.16 2020-07-24 [1] CRAN (R 4.0.2)
#> yaml 2.2.1 2020-02-01 [1] CRAN (R 4.0.2)
#>
#> [1] /home/cl/R/x86_64-pc-linux-gnu-library/4.0
#> [2] /usr/local/lib/R/site-library
#> [3] /usr/lib/R/site-library
#> [4] /usr/lib/R/library
推荐阅读
- python - 使用numpy数组Python的内存错误
- r - r/ggplot:计算组内的条形图份额
- android - 手写笔输入在 Unity android 上不起作用
- javascript - 即使在重新渲染时,函数也没有收到更新的 redux 状态
- matplotlib - 在 sphinx 中使用 plot 指令时指定标题时出错
- python - 尝试将列表中仅包含一个 int 的列表转换为列表中仅包含一个 int
- reactjs - 将鼠标悬停在外部元素上时 React Leaflet change maker
- python-3.x - 我想知道使用地图的字母?
- mysql - ORDER BY 数字和字符
- macos - 如何在 SwiftUI 中激活/停用菜单项