26

入ったら

print(cat(""))

私は得る

NULL

Rスクリプトの進行状況を印刷するために使用したいのですが、連結されたすべての文字列の最後にcat()戻る理由がわかりません。さらに重要なのは、スクリプトを停止する方法です。NULL

4

7 に答える 7

14

すべての回答はのドキュメントにあり?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(...))戻るのをやめることはできません。また、のような改行を明示的に追加する必要があります。NULLcatcat("foo\n")

于 2010-10-29T20:49:29.890 に答える
11

NULLは「cat()」の戻り値です。外側の「print()」を省略すると、NULLは表示されません。

于 2013-04-10T20:23:54.183 に答える
7

私はまったく同じ問題を抱えています。一言で言えば、cat()Rの下では少し不安定です。あなたはあなたがどのように使用しようとしているのかについて詳細には触れませんでしたcat()が、私はを見るのをお勧めしpaste()ます。

?paste

それはあなたが探しているものかもしれないと思います。

于 2010-10-29T20:57:52.173 に答える
6

を使用する必要はありませんprint(cat())。メッセージを印刷するに cat()は、すでに十分です。これはあなたが探しているものかもしれません:

  for (j in 1:n) {
     cat("Running loop", j, "of", n, "\n")
  }
于 2014-02-17T18:50:57.383 に答える
4

このために、現在の反復に関する情報を出力する場合は、を、と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
于 2010-10-29T21:37:35.350 に答える
0

* applyまたはfunction(x)のLOOPで使用するために、変数に割り当てる場合は、次のことを試してください。

x<-eval(paste0(name,".y"))

名前は変数であり、「。y」はそれに文字列を追加し、pasteは印刷することを示し、evalは印刷を評価し、<-はそれを変数に割り当て、axはその変数です。

于 2018-04-05T20:45:44.007 に答える
0

Rmarkdownで長い文字列をラップするためにいくつかのhtmlテキストを連結したいと思っていて、から同じNULLを取得していたという点で、少し異なる問題がありましたcat()。光沢のあるパッケージから包むだけでHTML()問題は解決しました。

```{r, results = "asis"}
HTML(cat("<span style='white-space: pre-wrap; word-break: break-all;'>",comments,"</span>"))



于 2021-06-03T16:15:00.683 に答える