R语言提供了丰富的字符串函数,这里介绍几个R语言里面常用的基本字符串处理函数,详细参数可以在R中查看帮助。
nchar()
nchar(x)用来返回字符串或者字符串向量x的长度。
> a <- '123'
> nchar(a)
[1] 3
> a2 <- c('123','456789','abc')
也可以作用于字符串向量,返回长度向量。
> nchar(a2)
[1] 3 6 3
grep()
grep(pattern,x)返回匹配模式pattern在字符串向量x中(或许是x的元素的一部分)的位置,用例子说明。
> a
[1] "123"
> a2
[1] "123" "456789" "abc"
> grep('1',a)
[1] 1
> grep('123',a)
[1] 1
> grep('4',a2)
[1] 2
> grep('ab',a2)
[1] 3
> grep('ba',a2)
integer(0)
> grep('abc',a2)
[1] 3
paste()
paste(...)可以把若干字符串连接起来,默认返回字符串以空格隔开。
> paste('1','a','bc','4')
[1] "1 a bc 4"
同胞兄弟paste0()则直接返回连接后的字符串,如下:
> paste0('1','a','bc','4')
[1] "1abc4"
> paste('1','a','bc','4',sep = '')
[1] "1abc4"
> paste('1','a','bc','4',sep = ',')
[1] "1,a,bc,4"
> paste('1','a','bc','4',sep = '/')
[1] "1/a/bc/4"
> paste('今天是','2017','6','17','日',sep = '/')
[1] "今天是/2017/6/17/日"
可以任意为其添加分隔符,默认以空格分隔。
sprintf()
sprintf(...)可以按照一定格式把若干的组件组合成字符串。下面是个简单例子:
> m <- 11
> sprintf('the square of %d is %d',m,m^2)
[1] "the square of 11 is 121"
学过C语言的人这个就很好理解了,其实在matlab中这行代码是可以运行的,也就是语法一样哦!
substr()
substr(x,start,stop)截取字符串x中start到stop范围的字串。
> a
[1] "123"
> a2
[1] "123" "456789" "abc"
> substr(a,1,2)
[1] "12"
对于字符串向量则是对向量每个元素截取。
> substr(a2,1,2)
[1] "12" "45" "ab"
strsplit()
strsplit(x,split)根据split将x拆分成若干字串,返回这些字串组成的列表。
> b <- '2017/6/17'
> b
[1] "2017/6/17"
> strsplit(b,'/')
[[1]]
[1] "2017" "6" "17"
可以用unlist()函数将其转化成字符串向量:
> unlist(strsplit(b,'/'))
[1] "2017" "6" "17"
regexpr()
regexpr(pattern,x)在字符串x中寻找pattern,返回与pattern匹配的第一个子字符串的起始字符位置。例如:
> b2 <- 'Bobsay:helloworld!'
> regexpr('hello',b2)
[1] 8
attr(,"match.length")
[1] 5
attr(,"useBytes")
[1] TRUE
“hello”存在b2的第八个位置开始,并且长度为5。
gregexpr()
gregexpr(pattern,x)实现与regexpr()一样的功能,不过它会查找x中的所有与pattern匹配的字串开始位置及长度。
> b3 <- paste0(b2,b2)
> b3
[1] "Bobsay:helloworld!Bobsay:helloworld!"
> gregexpr('hello',b3)
[[1]]
[1] 8 26
attr(,"match.length")
[1] 5 5
attr(,"useBytes")
[1] TRUE
显然,“hello”这个待匹配模式串在b3中出现了2次,所以返回了2个开始位置。
觉得不错,记得点赞哦,也可以分享、让更多的人看到!
网友评论