当前位置: 首页 > 工具软件 > CharTr > 使用案例 >

R语言字符串处理函数

苏星宇
2023-12-01

R笔记——基础

主要把学习工作中遇到的一些基础知识记下来,方便查看。

tryCatch()

result <- tryCatch({

}, warning = function(w){

}, error = function(e){
    paste0('错误: ', e) #这里的e就是字符串
}, finnally = {

}
)

tryCatch()本身是一个函数,不报错时返回第一个表达式的结果,如果警告或者报错就返回wanining或者error的函数返回值。
无论如何,finnally中的表达式一定会执行,但不会作为tryCatch()的返回值。

字符串处理函数

参考文章

大小写转换:toupper()和tolower()

text = "abcDEF"
toupper(text)
tolower(text)
# [1] "ABCDEF"
# [1] "abcdef"

替换:sub()、gsub()和chartr()

功能:都是替换字符串。
sub和gsub参数都一样,例如:(pattern = , replacement = , text),
三函数区别是:sub只替换第一个符合条件的数据,gsub替换所有符合条件的数据,这两个函数都是把字符串
作为一个整体替换;而chartr是对单个字符进行替换。

sub("a", "@", 'a1a2a3')
#[1] "@1a2a3"
gsub("a", "@", 'a1a2a3')
#[1] "@1@2@3"
chartr("abc", "123", "a1b2c3")#第一个参数的长度不能大于第二个参数。
#[1] "112233"

拼接: paste(),paste0()

格式:paste(p1, p2, sep=”, collapse=”)。paste0()默认sep=”

paste(c("a", "b"), c("1", "2"), sep = '+')
#[1] "a+1" "b+2" 结果是含有两字符串元素的向量
paste(c("a", "b"), c("1", "2"), sep = '+', collapse = '=')
#[1] "a+1=b+2" 结果为一个字符串

拆分:strsplit()

strsplit函数使用正则表达式,使用格式为:
strsplit(x, split, fixed = FALSE, perl = FALSE, useBytes = FALSE)
- 参数x为字串向量,每个元素都将单独进行拆分。
- 参数split为拆分位置的字串向量,默认为正则表达式匹配(fixed=FALSE)。
如果你没接触过正则表达式,设置fixed=TRUE,表示使用普通文本匹配或正则表达式的精确匹配。普通文本的运算速度快。
- perl=TRUE/FALSE的设置和perl语言版本有关,如果正则表达式很长,正确设置表达式并且使用perl=TRUE可以提高运算速度。
- 参数useBytes设置是否逐个字节进行匹配,默认为FALSE,即按字符而不是字节进行匹配。

strsplit("a,b,c, ", ',')
#[[1]]
#[1] "a" "b" "c" " "

查询1:grep()、grepl()和match()

grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE, fixed = FALSE, useBytes = FALSE, invert = FALSE)
grepl(pattern, x, ignore.case = FALSE, perl = FALSE, fixed = FALSE, useBytes = FALSE)
grep()返回字符串元素所在的位置,grepl()返回对应元素的逻辑结果,支持正则。
match()返回第一个匹配元素的位置,完全一样才算匹配,不支持正则。

grep("abc$", c("abc", "dabce","a"))
# [1] 1 
grepl("abc$", c("abc", "dabce","a"))
# [1]  TRUE FALSE FALSE
match("a",c("abc", "a", "bca", 'a'))
[1] 2

查询2:regexpr、gregexpr和regexec

这三个函数返回的结果包含了匹配的具体位置和字符串长度信息,可以用于字符串的提取操作。
“`

 类似资料: