37

catとを使用した文字列の連結の違いは何pasteですか?

特に、以下の質問があります。

  1. 呼び出しの結果を表示するときにRが二重引用符 ( ) を使用しないのはなぜですか(しかし、使用するときは引用符を使用します)。"catpaste

    > cat("test")
    test
    > paste("test")
    [1] "test"
    
  2. R のほとんどすべてのオブジェクトで使用できる関数である関数lengthとが、なぜ「動作」しないのですか?modecat

    > length(cat("test"))
    test[1] 0
    > mode(cat("test"))
    test[1] "NULL"
    
  3. C スタイルのエスケープ シーケンスが では機能するcatのに、 では機能しないのはpasteなぜですか?

    > cat("1)Line1\n 2)Line2\n 3)Line3")
    1)Line1
     2)Line2
     3)Line3
    > paste("1)Line1\n 2)Line2\n 3)Line3")
    [1] "1)Line1\n 2)Line2\n 3)Line3"
    
  4. R のリサイクル規則が で機能しないのはなぜcatですか?

    > cat("Grade", c(2, 3, 4, 5))
    Grade 2 3 4 5
    > paste("Grade", c(2, 3, 4, 5))
    [1] "Grade 2" "Grade 3" "Grade 4" "Grade 5"
    
4

1 に答える 1

32

cat非常にpaste異なる状況で使用されます


pasteではありませんprint

何かpasteを代入しないと、 のデフォルトのメソッドであるを使用して編集されるcharacter変数になり、したがって引用符などになります。出力がどのように見えるかを変更する方法を理解するには、 のヘルプを参照してください。 .printprint.defaultcharacterprint.default

  • print.default\n文字列内などのエスケープ文字を評価しません。

からの出力をキャプチャする方法については、この質問catへの回答を参照してください。


cat?cat)のわかりやすいヘルプより引用

連結して印刷

説明

表現を連結して、オブジェクトを出力します。catよりはるかに少ない変換を実行しますprint

...

詳細

catユーザー定義関数で出力を生成するのに役立ちます。引数をcharacterベクトルに変換し、それらを単一のベクトルに連結し、指定された を各要素characterに追加してから出力します。sep= string(s)

価値

なし (非表示NULL)。

cat 何も返さず、コンソールまたは別の接続に出力するだけです。

したがって、length(cat('x'))orを実行しようとすると、 ormode(cat('x'))が実行され、 が返されます。mode(NULL)length(NULL)NULL


貼り付けのヘルプも同様に役に立ち、説明的です

文字列の連結

説明

に変換した後、ベクトルを連結しcharacterます。

....

価値

character連結された値のベクトル。すべてのオブジェクトがそうである場合、これは長さゼロになります。ただし、collapse が非NULLの場合は、単一の空の文字列です。

于 2012-10-08T04:08:05.647 に答える