如果我输入
print(cat(""))
我明白了
NULL
我想用来cat()
打印 R 脚本的进度,但我不明白为什么它会NULL
在我所有连接字符串的末尾返回,更重要的是,如何让它停止?
如果我输入
print(cat(""))
我明白了
NULL
我想用来cat()
打印 R 脚本的进度,但我不明白为什么它会NULL
在我所有连接字符串的末尾返回,更重要的是,如何让它停止?
你所有的答案都在文档中?cat
。回答您的具体问题的部分是:
论据:
fill: a logical or (positive) numeric controlling how the output is broken into successive lines. If ‘FALSE’ (default), only newlines created explicitly by ‘"\n"’ are printed. Otherwise, the output is broken into lines with print width equal to the option ‘width’ if ‘fill’ is ‘TRUE’, or the value of ‘fill’ if this is numeric. Non-positive ‘fill’ values are ignored, with a warning.
... 和 ...
价值:
None (invisible ‘NULL’).
所以你不能停止print(cat(...))
返回NULL
,因为这就是cat
返回。并且您需要显式添加换行符,例如cat("foo\n")
.
NULL 是“cat()”的返回值。如果省略外部“print()”,您将看不到 NULL。
我有完全相同的问题。简而言之,cat()
在 R 下有点不稳定。您没有详细说明您如何尝试使用cat()
,但我建议您查看paste()
.
?paste
我想这可能是你正在寻找的东西。
我没有看到需要使用print(cat())
. 打印一条消息 cat()
已经足够了。这可能是您正在寻找的:
for (j in 1:n) {
cat("Running loop", j, "of", n, "\n")
}
为此,如果我要打印当前迭代的信息,我经常使用writeLines()
, 和strwrap()
, 并结合说循环值。根据需要处理长行的换行,这意味着我不必记得在通话结束时添加 a。paste()
strwrap()
writeLines()
"\n"
cat()
> writeLines(strwrap("a very very very very long long long long long long long long string, that is too wide for the current pager width"))
a very very very very long long long long long long long long string,
that is too wide for the current pager width
这是一个使用它打印出迭代指标的示例:
for(i in 1:1000) {
if(isTRUE(all.equal(i %% 100, 0)))
writeLines(strwrap(paste("Iteration", i)))
## do something
}
给出:
> for(i in 1:1000) {
+ if(isTRUE(all.equal(i %% 100, 0)))
+ writeLines(strwrap(paste("Iteration", i)))
+ ## do something
+ }
Iteration 100
Iteration 200
Iteration 300
Iteration 400
Iteration 500
Iteration 600
Iteration 700
Iteration 800
Iteration 900
Iteration 1000
如果要将其分配给变量,以在 *apply 或函数 (x) 的循环中使用,请尝试以下操作:
x<-eval(paste0(name,".y"))
名称是变量,“.y”向其中添加了一个字符串,paste 表示要打印,eval 评估打印,<- 将其分配给变量,而 ax 是该变量。
我有一点不同的问题,我想连接一些 html 文本以在我的 Rmarkdown 中包装长字符串,并且从cat()
. 只需HTML()
从闪亮的包装中包裹即可解决问题。
```{r, results = "asis"}
HTML(cat("<span style='white-space: pre-wrap; word-break: break-all;'>",comments,"</span>"))