Sam*_*Sam 20 r character string-concatenation
连接字符串与cat
和之间有什么区别paste
?
特别是,我有以下问题.
为什么R 在打印调用结果时不使用双引号("
)cat
(但在使用时使用引号paste
)?
> cat("test")
test
> paste("test")
[1] "test"
Run Code Online (Sandbox Code Playgroud)为什么函数length
和mode
哪些函数可用于R中的几乎所有对象,而不是 "工作" cat
?
> length(cat("test"))
test[1] 0
> mode(cat("test"))
test[1] "NULL"
Run Code Online (Sandbox Code Playgroud)为什么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)为什么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
执行转换的次数要少得多...
细节
cat
对于在用户定义的函数中生成输出很有用.它将其参数转换为character
向量,将它们连接到单个character
向量,将给定的sep= string(s)
元素附加到每个元素然后输出它们.值
无(不可见
NULL
).
cat
不会返回任何内容,它只会输出到控制台或其他连接.
因此,如果您尝试运行length(cat('x'))
或mode(cat('x'))
正在运行mode(NULL)
或length(NULL)
将返回NULL
.
粘贴的帮助同样有用且具有描述性
连接字符串
描述
转换为后连接向量
character
.....
值
阿
character
连接值的向量.如果所有对象都是,则长度为零,除非折叠不是,NULL
在这种情况下它是单个空字符串.