打印和猫的替代品

gja*_*bel 4 r

有一点精神障碍.我确信我找到了一个函数来在一个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 
Run Code Online (Sandbox Code Playgroud)

我在打印机和cat的R帮助文件中看不到任何对它的引用.谷歌搜索它,但没有到达任何地方.

And*_*rie 10

定义包装函数很容易cat:

catn <- function(x, append="\n"){cat(x); cat(append)}
Run Code Online (Sandbox Code Playgroud)

用它:

for(i in 10^(1:5))  catn(i)
10
100
1000
10000
1e+05
Run Code Online (Sandbox Code Playgroud)

或者你可以使用message(这有一个额外的好处,在一些代码编辑器,例如Eclipse,消息以不同的颜色显示):

for(i in 10^(1:5))  message(i)
10
100
1000
10000
1e+05
Run Code Online (Sandbox Code Playgroud)

  • 此外,消息通过管道输送到stderr而不是标准输出,并且可以使用supressMessages轻松地抑制它们.它是停止和警告的逻辑伴侣,会产生错误或警告. (5认同)
  • 我在本页底部对R中猫的评论:http://yihui.name/knitr/demo/output/ (2认同)