R 打印和cat的替代方案

R 打印和cat的替代方案,r,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 在print和cat的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 

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

围绕
cat
定义包装函数非常简单:

catn <- function(x, append="\n"){cat(x); cat(append)}
或者您可以使用
消息
(这有一个额外的好处,即在某些代码编辑器中,例如Eclipse,消息以不同的颜色显示):


如果
文件==”
,则
写入也可以写入标准输出:

文件
的默认值是
“数据”


(我也搜索了很长一段时间缺少的运算符:D)

那么使用
cat()
有什么问题吗?其实没什么,只是我记得看到的函数不必担心“\n”,我总是把它搞砸。此外,消息通过管道传输到stderr而不是stdout,并且可以使用supersmessages轻松地抑制它们。它是停止和警告的逻辑伴侣,会产生错误或警告。我在本页底部对R中的猫的评论:
for(i in 10^(1:5))  catn(i)
10
100
1000
10000
1e+05
for(i in 10^(1:5))  message(i)
10
100
1000
10000
1e+05
> for (i in 10^(1:5)) write(i, "")
10
100
1000
10000
1e+05