R语言学习14-stringr包
Posted 柠檬培养师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言学习14-stringr包相关的知识,希望对你有一定的参考价值。
在R
中处理字符串,stringr
包是最合适的包之一。stringr
包中大多数函数接受2
个参数:要处理的字符串和正则表达式。
其他函数
在学习stringr
包之前,我们可以看看R
中内建的处理字符串函数是如何使用正则表达式的。
在上一课中,我们一直使用grepl()
查看正则表达式是否与字符串匹配。grepl()
代表grep
逻辑。
1> grepl("[Ii]", c("Hawaii", "Illinois", "Kentucky"))
2[1] TRUE TRUE FALSE
还有一个老式的grep()
,它返回与正则表达式参数匹配的向量的索引。
1> grep("[Ii]", c("Hawaii", "Illinois", "Kentucky"))
2[1] 1 2
对字符串进行替换操作的时候,我们可以使用sub()
函数。sub()
接受3
个参数:
正则表达式
替换内容
需要被替换的字符串
sub()
会替换匹配到的第一个结果。
1> sub("[Ii]", "1", c("Hawaii", "Illinois", "Kentucky"))
2[1] "Hawa1i" "1llinois" "Kentucky"
如上述代码所示,向量中每个元素被匹配到的第一个i
或I
被替换成了数字1
。
还有一个相似的函数gsub()
,它会替换所有匹配到的结果。
1> gsub("[Ii]", "1", c("Hawaii", "Illinois", "Kentucky"))
2[1] "Hawa11" "1ll1no1s" "Kentucky"
在学习stringr
之前,我们要讨论的最后一个函数是strsplit()
函数。这是一个分割字符串的函数。
1> two_s <- state.name[grep("ss", state.name)]
2> two_s
3[1] "Massachusetts" "Mississippi" "Missouri" "Tennessee"
4
5> strsplit(two_s, "ss")
6[[1]]
7[1] "Ma" "achusetts"
8
9[[2]]
10[1] "Mi" "i" "ippi"
11
12[[3]]
13[1] "Mi" "ouri"
14
15[[4]]
16[1] "Tenne" "ee"
stringr
现在到了stringr
的部分,stringr
是数据优先的,因此第一个参数基本是字符串,第二个参数才是正则表达式。这个包里的大多数函数以str_
开头。
首先介绍的是str_extract()
函数,这个函数会提取字符串中能匹配正则表达式的部分。
1> str_extract("Camaro Z28", "[0-9]+")
2[1] "28"
str_order()
函数会返回字符串向量排序后的索引。
1> str_order(c("p", "e", "n", "g"))
2[1] 2 4 3 1
例如上述代码中,排序后的向量顺序应该是e, g, n, p
,该函数返回的就是相应的元素索引。
str_pad()
函数用其他字符填充字符串,这在最终要将打印的字符串供人阅读时通常很有用。
1> str_pad("Thai", width = 8, side = "left", pad = "-")
2[1] "----Thai"
str_to_title()
函数类似于tolower()
和toupper()
的集合,是将字符串转成Title
的形式,即首字母大写,后面的字母小写。
1> str_to_title(c("CAPS", "low", "Title"))
2[1] "Caps" "Low" "Title"
str_trim()
函数的作用是去除字符串两侧的空格。
1> str_trim(" trim me ")
2[1] "trim me"
最后,使用word()
函数可以为字符串中的每个单词建立索引,并根据索引提取元素。就好像它是向量一样。
1> word("See Spot run.", 2)
2[1] "Spot"
小结
主要是学习stringr
包中的几个常用函数。
str_extract:提取正则表达式匹配的部分
str_order:对字符串向量进行排序,返回索引
str_pad:用其他字符填充字符串
str_to_title:将字符串转化标题的形式
str_trim:去除字符串两端的空格
word:对字符串建立索引,并提取
以上是关于R语言学习14-stringr包的主要内容,如果未能解决你的问题,请参考以下文章