山海之间

R语言学习14-stringr包

R语言学习14-stringr包
2020-06-18 · 4 min read
stringr R语言 教程

R中处理字符串,stringr包是最合适的包之一。
stringr包中大多数函数接受2个参数:要处理的字符串和正则表达式。

其他函数

在学习stringr包之前,我们可以看看R中内建的处理字符串函数是如何使用正则表达式的。

在上一课中,我们一直使用grepl()查看正则表达式是否与字符串匹配。grepl()代表**grep逻辑**。

> grepl("[Ii]", c("Hawaii", "Illinois", "Kentucky"))
[1]  TRUE  TRUE FALSE

还有一个老式的grep(),它返回与正则表达式参数匹配的向量的索引

> grep("[Ii]", c("Hawaii", "Illinois", "Kentucky"))
[1] 1 2

对字符串进行替换操作的时候,我们可以使用sub()函数。sub()接受3个参数:

  1. 正则表达式
  2. 替换内容
  3. 需要被替换的字符串

sub()会替换匹配到的第一个结果。

> sub("[Ii]", "1", c("Hawaii", "Illinois", "Kentucky"))
[1] "Hawa1i"   "1llinois" "Kentucky"

如上述代码所示,向量中每个元素被匹配到的第一个iI被替换成了数字1

还有一个相似的函数gsub(),它会替换所有匹配到的结果。

> gsub("[Ii]", "1", c("Hawaii", "Illinois", "Kentucky"))
[1] "Hawa11"   "1ll1no1s" "Kentucky"

在学习stringr之前,我们要讨论的最后一个函数是strsplit()函数。这是一个分割字符串的函数。

> two_s <- state.name[grep("ss", state.name)]
> two_s
[1] "Massachusetts" "Mississippi"   "Missouri"      "Tennessee"

> strsplit(two_s, "ss")
[[1]]
[1] "Ma"        "achusetts"

[[2]]
[1] "Mi"   "i"    "ippi"

[[3]]
[1] "Mi"   "ouri"

[[4]]
[1] "Tenne" "ee"

stringr

现在到了stringr 的部分,stringr数据优先的,因此第一个参数基本是字符串,第二个参数才是正则表达式。这个包里的大多数函数以str_开头。

首先介绍的是str_extract()函数,这个函数会提取字符串中能匹配正则表达式的部分。

> str_extract("Camaro Z28", "[0-9]+")
[1] "28"

str_order()函数会返回字符串向量排序后的索引。

> str_order(c("p", "e", "n", "g"))
[1] 2 4 3 1

例如上述代码中,排序后的向量顺序应该是e, g, n, p,该函数返回的就是相应的元素索引。

str_pad()函数用其他字符填充字符串,这在最终要将打印的字符串供人阅读时通常很有用。

> str_pad("Thai", width = 8, side = "left", pad = "-")
[1] "----Thai"

str_to_title()函数类似于tolower()toupper()的集合,是将字符串转成Title的形式,即首字母大写,后面的字母小写。

> str_to_title(c("CAPS", "low", "Title"))
[1] "Caps"  "Low"   "Title"

str_trim()函数的作用是去除字符串两侧的空格。

> str_trim(" trim me ")
[1] "trim me"

最后,使用word()函数可以为字符串中的每个单词建立索引,并根据索引提取元素。就好像它是向量一样。

> word("See Spot run.", 2)
[1] "Spot"

小结

主要是学习stringr包中的几个常用函数。

  • str_extract: 提取正则表达式匹配的部分
  • str_order:对字符串向量进行排序,返回索引
  • str_pad:用其他字符填充字符串
  • str_to_title: 将字符串转化标题的形式
  • str_trim:去除字符串两端的空格
  • word:对字符串建立索引,并提取

本文首发于公众号:柠檬培养师(ID: yantinger90),欢迎关注!

Powered by Gridea,浙ICP备17039354号-1,© 2019 - 2020🍋