连接字符串与cat()和paste()之间有什么区别?

时间:2012-10-08 03:52:59

标签: r character string-concatenation

将字符串与catpaste连接在一起有什么区别?

特别是,我有以下问题。

  1. 为什么R 在打印调用"的结果时使用双引号(cat)(但在使用{{1}时它使用引号}})?

    paste
  2. 为什么功能> cat("test") test > paste("test") [1] "test" length功能可用于R中的几乎所有对象,“工作”mode

    cat
  3. 为什么C风格的转义序列适用于> length(cat("test")) test[1] 0 > mode(cat("test")) test[1] "NULL" ,而不适用适用于cat

    paste
  4. 为什么R的回收规则不适用于> 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"

    cat

1 个答案:

答案 0 :(得分:17)

catpaste将在非常不同的情况下使用


paste不是print

当你paste某事并且没有将其分配给任何内容时,它会成为character变量print - 使用print.default编辑,character的默认方法{1}},因此引号等。您可以查看print.default的帮助,了解如何修改输出的内容。

  • print.default不会在字符串中评估转义字符,例如\n

查看此question的答案,了解如何从cat捕获输出。


引用cat?cat

的易于阅读的帮助
  

连接和打印

     

描述

     

输出对象,连接表示。 cat执行   转化率远低于print

     

...

     

详细信息

     

cat对于在用户定义的函数中生成输出很有用。它   将其参数转换为character向量,将它们连接到一个   单character个向量,将给定的sep= string(s)附加到每个NULL   元素然后输出它们。

     

     

无(隐身cat)。

length(cat('x')) 不会返回任何内容,它只会输出到控制台或其他连接。

因此,如果您尝试运行mode(cat('x'))mode(NULL),则表示您正在运行length(NULL)NULL,这将返回character


粘贴帮助同样有用且具有描述性

  

连接字符串

     

描述

     

转换为character后连接向量。

     

...

     

     

连接值的NULL向量。这将是很长的   如果所有对象都为零,则除非在这种情况下崩溃不是{{1}}   它是一个空字符串。