R语言字符处理—基本函数
函数 | 说明 |
---|---|
Encoding(x) Encoding(x) <- value enc2native(x) enc2utf8(x) |
读取或设置字符向量的编码 常结合iconv(x, from = “”, to = “”)函数使用 注意:Encoding(x) <- value 这是一种赋值函数 |
nchar(x, type = “chars”, allowNA = FALSE, keepNA = NA) nzchar(x, keepNA = FALSE) |
nchar()返回字符长度 nzchar()判断是否空字符 keepNA为真是NA保留,不计入计数 对于缺失值NA,nchar和nzchar函数默认是字符数为2的字符串。 对于NULL,nchar和nzchar函数会忽略掉。 |
substr(x, start, stop) substring(text, first, last = 1000000L) substr(x, start, stop) <- value substring(text, first, last = 1000000L) <- value |
提取或替换字符向量的子字段,substring同substr功能一样 |
strtrim(x, width) | 按显示宽度截断字符串 |
paste (…, sep = “ “, collapse = NULL) paste0(…, collapse = NULL) |
通过sep连接间隔连接对象,返回字符串向量 设定collapse的话,会通过collapse连接间隔将上一步的字符串向量连接成一个字符串 |
strsplit(x, split, fixed = FALSE, perl = FALSE, useBytes = FALSE) | 基于split子句分割字符向量x fixed为TRUE的话,完全匹配split;否则,基于正则表达式。 可以使用split=NULL来分割每个字符。 |
chartr(old, new, x) | 将x中的字符old变换为字符new 注意替换的是单个对应的字符,而非字符串 |
tolower(x) toupper(x) |
大小写转换 |
sprintf(fmt, …) | 系统C库函数sprintf封装器,格式化输出函数 |
正则表达式—–字符串匹配函数
函数 | 说明 |
---|---|
grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE,fixed = FALSE, useBytes = FALSE) | 若x为list,则找出和(参数pattern)匹配的序列编号 若x为字符串,则判别改字符串中是否包含特定的字符,包含返回1,不包含返回integer(0) 若x为字符向量,同list 只找到第一个即可 |
grepl(pattern, x, ignore.case = FALSE, perl = FALSE,fixed = FALSE, useBytes = FALSE) | 返回TRUE 或FALSE |
sub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,fixed = FALSE, useBytes = FALSE) | 只替换匹配到的第一个字符串 |
gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,fixed = FALSE, useBytes = FALSE) | 替换匹配到的所用字符串 |
regexpr(pattern, text, ignore.case = FALSE, perl = FALSE,fixed = FALSE, useBytes = FALSE) | 返回第一个和(参数pattern)匹配的起始位置(或下标)和匹配长度(pattern的长度,若为正则,则是匹配字符串的实际长度) 若没有则返回: -1 |
gregexpr(pattern, text, ignore.case = FALSE, perl = FALSE,fixed = FALSE, useBytes = FALSE) | regexpr()函数只匹配第一个,想要多次匹配则用gregexpr()函数 |
regexec(pattern, text, ignore.case = FALSE, perl = FALSE,fixed = FALSE, useBytes = FALSE) | 和regexpr()函数一样 |
共同参数解析: 1、fixed = TRUE: 使用精确匹配 2、perl = TRUE: 使用Perl风格正则表达式 3、fixed = FALSE且perl = FALSE: 使用POSIX 1003.2扩展正则表达式 4、 useBytes = TRUE时逐字节匹配,否则逐字符匹配 |
|
regmatches(x, m, invert = FALSE) regmatches(x, m, invert = FALSE) <- value |
抽取或替换正则表达式匹配子串 invert = TRUE则抽取或替换不匹配子串 str<-c(“Now is “,“the”,” time “) m<-regexpr(” +“,str) regmatches(str,m)<- “9999” str |
glob2rx(pattern, trim.head = FALSE, trim.tail = TRUE) | 将通配符模式变成正则表达式 |
grep()函数参数:
参数 | 功能 |
---|---|
pattern | 包含正则表达式的字符串 |
x | 寻找匹配的字符向量,或者可以通过字符向量强制转换的对象。支持长向量 |
ignore.case | 如果为FALSE,则模式匹配区分大小写;如果为TRUE,则在匹配期间忽略大小写 |
perl | 如果为TRUE,使用perl匹配的正则表达式 |
value | 如果为FALSE,则返回包含由grep确定的匹配的索引的向量,如果为TRUE,则返回包含匹配元素本身的向量 |
fixed | 如果为TRUE,则pattern是要按原样匹配的字符串 |
useBytes | 如果为TRUE,则匹配是逐字节而不是逐字符完成的 |
invert | 如果为TRUE,则返回不匹配的元素的索引或值 |
grep()能对向量中特定条件的元素进行查询,默认return为index,。grep()语法与grep()大致相似,但默认return为logical。