美文网首页
R语言中的字符串

R语言中的字符串

作者: 大数据技术派 | 来源:发表于2019-03-10 23:07 被阅读0次

    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个开始位置。

    觉得不错,记得点赞哦,也可以分享、让更多的人看到!

    相关文章

      网友评论

          本文标题:R语言中的字符串

          本文链接:https://www.haomeiwen.com/subject/rpdmpqtx.html