【问题标题】:Alternative to print and cat替代打印和猫
【发布时间】:2012-06-27 16:30:58
【问题描述】:

有一点心理障碍。我确信我找到了一个在for 循环中打印迭代数的函数,该循环不是print 也不是cat,但给出的输出与下面的 cat 相同。

> for(i in 10^(1:5))  print(i)
[1] 10
[1] 100
[1] 1000
[1] 10000
[1] 1e+05
> for(i in 10^(1:5))  cat(i, "\n")
10 
100 
1000 
10000 
1e+05 

我在 print 和 cat 的 R 帮助文件中看不到对它的任何引用。尝试用谷歌搜索它,但没有得到任何地方。

【问题讨论】:

  • 那么使用cat()有什么问题?
  • 没什么,只是我记得看到你的功能不必担心我总是搞砸的“\n”。

标签: r


【解决方案1】:

cat 周围定义一个包装函数很容易:

catn <- function(x, append="\n"){cat(x); cat(append)}

使用它:

for(i in 10^(1:5))  catn(i)
10
100
1000
10000
1e+05

或者您可以使用message(它的额外好处是在某些代码编辑器中,例如 Eclipse,消息以不同的颜色显示):

for(i in 10^(1:5))  message(i)
10
100
1000
10000
1e+05

【讨论】:

  • 此外,消息通过管道传输到标准错误而不是标准输出,并且可以使用 supressMessages 轻松抑制它们。它是停止和警告的逻辑伴侣,产生错误或警告。
  • 我在 R 中的猫在本页底部的 cmets:yihui.name/knitr/demo/output
【解决方案2】:

如果file == ""write 也可以写入标准输出:

> for (i in 10^(1:5)) write(i, "")
10
100
1000
10000
1e+05

file 的默认值是 "data"

(我也在找这个失踪的算子很久了:D)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 2022-09-23
    • 2022-07-13
    相关资源
    最近更新 更多