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

Sam*_*Sam 20 r character string-concatenation

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

特别是,我有以下问题.

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

    > cat("test")
    test
    > paste("test")
    [1] "test"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 为什么函数lengthmode哪些函数可用于R中的几乎所有对象,而不是 "工作" cat

    > length(cat("test"))
    test[1] 0
    > mode(cat("test"))
    test[1] "NULL"
    
    Run Code Online (Sandbox Code Playgroud)
  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"
    
    Run Code Online (Sandbox Code Playgroud)
  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"
    
    Run Code Online (Sandbox Code Playgroud)

mne*_*nel 19

cat并将paste用于非常不同的情况.


paste 不是 print

当你paste做某事并且不将它分配给任何东西时,它变成了一个character变量,它print使用print.default了-ed ,默认方法character,因此引号等.你可以查看帮助print.default,了解如何修改输出的内容.

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

查看此问题的答案,了解如何捕获输出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在这种情况下它是单个空字符串.