内容简介:前段时间终于结束了一些事情,一个月来没好好坐下来看些资料了,接下来打算把之前计划的事情都一一完成下,先从stringr包开始,这个R语言的工具包值得做些笔记以便平时自己的查询及使用(记性不太好),可以提高不少处理数据的效率stringr包有众多处理字符串的函数,一般都是以str_开头命名,非常好理解和记忆;相对一些相同功能的基础函数,其更加高效及便捷下面以官方文档
前段时间终于结束了一些事情,一个月来没好好坐下来看些资料了,接下来打算把之前计划的事情都一一完成下,先从stringr包开始,这个R语言的 工具 包值得做些笔记以便平时自己的查询及使用(记性不太好),可以提高不少处理数据的效率
stringr包有众多处理字符串的函数,一般都是以str_开头命名,非常好理解和记忆;相对一些相同功能的基础函数,其更加高效及便捷
下面以官方文档 https://cran.r-project.org/web/packages/stringr/vignettes/stringr.html 以及一些网上教程做个简单的整理
字符串处理
获取字符串长度 str_length()
,对应的基础函数是 nchar()
str_length("abc") [1] 3
截取字符串 str_sub()
,对应的基础函数是 substr()
,常见的如下:
x <- c("abcdef", "ghifjk") str_sub(x, 3, 3) [1] "c" "i"
而我们也可用其来修改字符串,如果是赋值NA则需加上 omit_na = TRUE
参数(不然输出值均为NA了)
x1 <- x2 <- x3 <- c("abcdef", "ghifjk") str_sub(x1, 3, 3) <- "X" x1 [1] "abXdef" "ghXfjk" str_sub(x2, 2, 2) <- NA x2 [1] NA NA str_sub(x3, 2, 2, omit_na = TRUE) <- NA x3 [1] "abcdef" "ghifjk"
赋值字符串 str_dup()
,对应的基础函数应该是 rep()
加上 paste()
,但 str_dup()
更加好用,如:
str_dup("abc", c(2, 3)) [1] "abcabc" "abcabcabc"
字符串拼接 str_c()
,其参数与 paste()
一样,均有sep(把多个字符串拼接为一个大的字符串)以及collapse(把多个向量参数拼接为一个大的字符串),但对于NA的处理有点差别: paste
会NA当做字符串’NA’,而 str_c
则需要先做一个NA的转化,如:
paste("a","b",NA,sep="") [1] "abNA" tr_c("a", "b", str_replace_na(NA)) [1] "abNA"
字符串-空白的添加、删除及修改
对于whitespace的操作我不太常用,唯一用过的是截断长字符,用 str_trunc()
x <- c("Short", "This is a long string") str_trunc(x, 10) [1] "Short" "This is..."
添加空格使字符串变成固定长度 str_pad()
,默认是添加在左边;但其不会缩断字符串长度,尽管你参数设置小于字符串长度(PS.由于该特性,其与 str_trunc()
搭配使用可确保所有字符串有相同长度)
str_pad(c("aa", "bbccee"), 4) [1] " aa" "bbccee"
用 str_trim()
可实现与上述相反的功能-删除空白以及tab分隔符,默认也是两边均删除
str_trim(" abc ") [1] "abc"
用 str_wrap()
可实现长段文字段落化
字符串变换-大小写转化及排序
str_to_upper()
及 str_to_lower()
可实现大写和小写的转化,对应的基础函数则是 toupper()
及 tolower()
x <- "I like horses." str_to_upper(x) [1] "I LIKE HORSES." str_to_lower(x) [1] "i like horses."
另外还有转化为标题(首字母大写)的 str_to_title()
str_to_title(x) [1] "I Like Horses."
如果是非英文的则需设置 local
参数,以 stringi::stri_locale_list()
查看其可选项
str_order()
和 str_sort()
对应基础函数 order()
和 sort()
,因此比较好理解,而且也支持local参数
str_conv()
可支持字符串的编码转化,相见恨晚的函数,对于一些中文乱码的情况非常好用(尤其是window系统下)
字符串的正则匹配
正则匹配在常规数据处理过程中是一个必不可少的技能,这也是我喜欢用stringr包的重要原因,其对标的是基础函数 grep()
/ grepl()
/ gregexpr()
/ sub()
等
str_detect()
判断是否匹配上,对应 grepl()
x <- c("abcdef", "ghifjk") str_detect(x, "a") [1] TRUE FALSE
str_subset()
返回匹配上的元素,对应 grep()
str_subset(x, "abc") [1] "abcdef"
str_locate()
返回匹配上字符串的位置,对应 gregexpr()
str_locate(x, "cde") start end [1,] 3 5 [2,] NA NA
有些stringr包的函数默认是返回第一次匹配的结果,如果要返回所有匹配的,需要加all后缀的函数(还有几个函数也类似),如:
str_locate_all(c("abcdefabc", "ghifjkabc"), "abc") [[1]] start end [1,] 1 3 [2,] 7 9 [[2]] start end [1,] 7 9
str_extract()
与 str_subset
相似但略有区别,其返回的是匹配上的字符串,无匹配上的则返回NA; str_extract_all
有个simplify参数能矩阵格式的结果(默认是list格式)
str_extract(x, "abc") [1] "abc" NA
str_match()
返回你正则表达式中需要捕获的字符串;比如你抓取 c("aa11bb22cc", "aa11bb33cc")
这字符串中的22和33数字,如果单纯用 str_extract
是不行的,用基础函数 sub
倒是可以,但略微有点麻烦,如:
sub("\\w+[a-z](\\d+)[a-z]+", "\\1", "aa11bb22cc") [1] "22"
但是用 str_match()
的话就比较直观简单了,其第一列是完全匹配的字符串,第二列开始则是捕获的,非常好用!如:
str_match("aa11bb22cc", "\\w+[a-z](\\d+)([a-z]+)") [,1] [,2] [,3] [1,] "aa11bb22cc" "22" "cc"
str_replace()
用法跟基础函数 sub()
非常相似,都是将匹配上的字符串做个替换
str_replace("apple", "a", "xx") [1] "xxpple"
如果是替换成空,那么可以考虑用 str_remove()
,相当于 str_replace(string, pattern, "")
除了上述外,还有些简单且有效的函数,比如:
str_count
返回匹配上数目
str_count("aabbcc", "a") [1] 2
str_split()
类似于基础函数 strsplit()
,分割字符串,用法也一样;但是还有个 str_split_fixed
可以指定分割成数目,而前两者是没这个功能的,如:
str_split_fixed("a-b-c", "-", n = 2) [,1] [,2] [1,] "a" "b-c"
除了上述提到的正则匹配外,stringr包还有其他的Engines:
fixed() coll() boundary()
对于boundary可以看个例子:
x <- "This is a sentence." str_split(x, boundary("word")) [[1]] [1] "This" "is" "a" "sentence"
所以一般我们常见的相当于boundary(“character”)
如需完整版的函数介绍,可看stringr包的chetsheet:
https://github.com/rstudio/cheatsheets/blob/master/strings.pdf本文出自于 http://www.bioinfo-scrounger.com 转载请注明出处
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 查找一个字符串中最长不含重复字符的子字符串,计算该最长子字符串的长度
- 字符串、字符处理总结
- 高频算法面试题(字符串)leetcode 387. 字符串中的第一个唯一字符
- php删除字符串最后一个字符
- (三)C语言之字符串与字符串函数
- 算法笔记字符串处理问题H:编排字符串(2064)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
DOM Scripting
Jeremy Keith / friendsofED / 2010-12 / GBP 27.50
There are three main technologies married together to create usable, standards-compliant web designs: XHTML for data structure, Cascading Style Sheets for styling your data, and JavaScript for adding ......一起来看看 《DOM Scripting》 这本书的介绍吧!