入ったら
print(cat(""))
私は得る
NULL
Rスクリプトの進行状況を印刷するために使用したいのですが、連結されたすべての文字列の最後にcat()
戻る理由がわかりません。さらに重要なのは、スクリプトを停止する方法です。NULL
入ったら
print(cat(""))
私は得る
NULL
Rスクリプトの進行状況を印刷するために使用したいのですが、連結されたすべての文字列の最後にcat()
戻る理由がわかりません。さらに重要なのは、スクリプトを停止する方法です。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()
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またはfunction(x)のLOOPで使用するために、変数に割り当てる場合は、次のことを試してください。
x<-eval(paste0(name,".y"))
名前は変数であり、「。y」はそれに文字列を追加し、pasteは印刷することを示し、evalは印刷を評価し、<-はそれを変数に割り当て、axはその変数です。
Rmarkdownで長い文字列をラップするためにいくつかのhtmlテキストを連結したいと思っていて、から同じNULLを取得していたという点で、少し異なる問題がありましたcat()
。光沢のあるパッケージから包むだけでHTML()
問題は解決しました。
```{r, results = "asis"}
HTML(cat("<span style='white-space: pre-wrap; word-break: break-all;'>",comments,"</span>"))