R语言提供了很多字符串操作函数。
►grep()函数
grep( pattern,x )语句在字符串向量x里搜索给定子字符串pattern。如果x有n个元素,即包含n个字符串,则grep( pattern,x )会返回一个长度不超过n的向量。这个向量的每个元素是x的索引,表示在索引对应的元素x[i]中有与pattern匹配的子字符串。
> grep( "Pole", c( "Equator", "North Pole", "South Pole" ) )
[1] 2 3
> grep( "pole", c( "Equator", "North Pole", "South Pole" ) )
integer(0)
►nchar()函数
nchar()函数返回字符串的长度。
> nchar( "South Pole" )
[1] 10
注:R语言中的字符串末尾没有空字符NULL。如果x不是字符形式,nchar()会得到不可预料的结果。
►paste()函数
paste()函数把若干个字符串拼接起来,返回一个长字符串。
> paste( "North", "Pole" )
[1] "North Pole"
> paste( "North", "Pole", sep="" )
[1] "NorthPole"
> paste( "North", "Pole", sep="." )
[1] "North.Pole"
> paste( "North", "and", "South", "Pole" )
[1] "North and South Pole"
可选参数sep可以用除了空格以外的其他字符把各个字符串组件连接起来。如果指定sep为空字符串,则字符串之间没有任何字符。
►sprintf()函数
sprintf()函数按一定格式把若干个组件组合成字符串。
> i <- 4
> s <- sprintf( "the square of %d is %d", i, i^2 )
> s
[1] "the square of 4 is 16"
注:函数名称sprintf表示的是字符串打印(string print),即“打印”到字符串里,而不是打印到屏幕上。
►substr()函数
substr( x,start,stop )函数返回给字符串指定位置范围start:stop上的子字符串。
> substring( "Equator", 3, 5 )
[1] "uat"
►strsplit()函数
strsplit( x,split )函数根据x中的字符串split把字符串拆分成若干子字符串,返回这些子字符串组成的R列表。
> strsplit( "2014-10-21", split="-" )
[[1]]
[1] "2014" "10" "21"
►regexpr()函数
regexpr( pattern,text )函数在字符串text中寻找pattern,返回与pattern匹配的第一个子字符串的起始字符位置。
> regexpr( "uat", "Equator" )
[1] 3
> attr(,"match.length")
[1] 3
> attr(,"useBytes")
[1] TRUE
注:这表明,uat的确出现在“Equator”中,起始于第3个字符。
►gregexpr()函数
gregexpr( pattern,text )函数的功能与regexpr()一样,不过它会寻找与pattern匹配的全部子字符串的起始位置。
> gregexpr( "ing", "Stringing" )
[[1]]
[1] 4 7
> attr(,"match.length")
[1] 3 3
> attr(,"useBytes")
[1] TRUE