连接字符串
在实践中,我们经常需要将多个字符串连接成一个。paste( )函数就是用来连接多
个字符向量的函数。这个函数也使用空格作为默认分隔符:
paste("Hello", "world")
## [1] "Hello world"
paste("Hello", "world", sep ="-")
## [1] "Hello-world"
如果不需要分隔符,可以设定 sep=""或者使用 paste0( ):
paste0("Hello", "world")
## [1] "Helloworld"
也许 paste( )和 cat( )会使你感到困惑,因为它们都能够用于连接字符串。那它们的
区别是什么呢?区别在于cat( )只是在控制台中打印出字符串,但是paste( )可以返回字符
串以便后续使用。接下来的代码显示:cat( )打印出了连接好的字符串,但是返回了NULL:
value1 <- cat("Hello", "world")
## Hello world
value1
## NULL
value2 <- paste("Hello", "world")
value2
## [1] "Hello world"
换句话说,cat( )仅仅打印了字符串,但是 paste( )创造了一个新的字符向量。
前面的例子展示了 paste( )处理单元素字符向量的行为。那么处理多元素向量的时
候呢?让我们看看它会怎么做:
paste(c("A", "B"), c("C", "D"))
## [1] "A C" "B D"
158 第 6 章 字符串的使用
可以看到 paste( )自动匹配了元素,也就是说,首先执行 paste("A", "C"),然
后执行 paste("B", "D"),最后,构成一个有两个元素的字符向量。
如果我们想要把结果放在同一个字符串中,可以设定collapse= 使两个元素再次连接:
paste(c("A", "B"), c("C", "D"),collapse =", ")
## [1] "A C, B D"
如果想让它们出现在两行中,可以设定 collapse 为\n(即换行符):
result <- paste(c("A", "B"), c("C", "D"), collapse ="\n") result
## [1] "A C\nB D"
新的字符向量 result 是一个两行的字符串,但是其文本表示仍然在同一行中。新一
行和我们设定的一样,通过\n 表示。为了查看创建的文本,需要调用 cat( ):
cat(result)
## A C
## B D
现在,这个两行的字符串已经以预期形式出现在控制台中。paste0( )也可以做到相
同的效果。