文本数据存储在字符向量中,字符向量的每个元素都是字符串,而非单独的字符。在R中,可以使用双引号,或单引号表示字符。

一,字符串中的字符数量

函数nchar()用于获得字符串中的字符数量:

> s <- 'read'
> nchar(s)
[]

二,转义字符

R语言使用“\”,把特定的字符转义为特殊字符,例如 “\t”是制表符,换行符是“\n”,或者 “\r\n”,通常情况下,\r是回车符,把光标移动到当前行的开始,并覆盖当前行已经存在的数据,而\n是换行,把光标移动到一下行;

常用的转义字符是:使用两个“\\”,打印“\”;在字符串中包含双引号或单引号,使用“\"”,或“\'”;如果在双引号中使用单引号,或者在单引号中使用双引号,那么不需要对引号进行转义,R会打印引号。

三,更改字符的大小写

toupper()和tolower()函数,用于把字符串中的字符全部转换为大写或小写:

> toupper('Vic')
[1] "VIC"
> tolower('Vic')
[1] "vic"

四,拼接字符

函数paste()用于把不同的字符向量组合起来,传递的参数是字符向量,返回的数据类型是字符向量:

paste (..., sep = " ", collapse = NULL)

paste()函数按照向量元素的位置顺序,把向量中的元素拼接在一起,中间以sep参数(默认值是空格)分割,collapse参数用于把结果向量(字符向量)的各个元素折叠成一个单独的字符串,使用collapse指定的字符把结果向量的各个元素拼接在一起:

> paste(c('red','yellow'),'lorry')
[] "red lorry" "yellow lorry"
> paste(c('red','yellow'),c('lorry','car'))
[] "red lorry" "yellow car"
> paste(c('red','yellow'),c('lorry','car'),collapse=',')
[] "red lorry,yellow car"

五,截取字符串

substr或substring函数用于从字符串中截取子串,字符串的位置从1开始,

substr(x, start, stop)
substring(text, first, last = 1000000L)

1,当start和stop是正整数时,substr和substring函数的行为是相同的:

> substr('R is free software',1,6)
[] "R is f"
> substring('R is free software',1,6)
[] "R is f"

2,当start和stop是向量时,substr和substring函数的行为是不相同的:

> substring('R is free software',1:4,6:9)
[] "R is f" " is fr" "is fre" "s free"
> substr('R is free software',1:4,6:9)
[] "R is f"

六,分割字符串

函数strsplit用于按照指定的字符把长的字符串分割成断的子字符串,

strsplit(x, split, fixed = FALSE)

参数split是用于分割字符串,当参数fixed为TRUE时,表示字符串完全匹配split分隔符;当fixed参数为FALSE时,表示参数split是包含正则表达式的字符,使用正则匹配。函数返回的结果是字符列表,一个列表项对应一个字符串。

> strsplit('ab,cd,ef',',')
[[]]
[] "ab" "cd" "ef"

七,格式化数字

format函数用于把数字(numeric)类型转换成字符类型,formatC函数使用C语言风格来指定输出的格式,而更通用的C风格的格式化函数是sprintf,第一个参数包含字符串或数字变量的占位符,其他参数逐个对应这些占位符,sprintf函数的占位符:

  • %s:字符串
  • %f:浮点型
  • %d:整数
  • %e :科学计数法

格式化函数的定义:

format(x, digits = NULL, nsmall = 0L)
formatC(x, digits = NULL, format = NULL, flag = "")
sprintf(fmt, ...)

参数注释:

  • digits:是一个建议值,用于设置数字的总位数,包括小数点左边和右边;
  • nsmall:小数位的数量;
  • format:数字的格式,跟占位符相似: "d" (for integers), "f", "e", "E", "g", "G", "fg" (for reals), or "s" (for strings).
  • flag:在数字前添加符号

例如,format函数和sprintf函数对数字格式化输出的结果是:

> format(1.3)
[1] "1.3"
> sprintf('%f, %d',1.3,1)
[1] "1.300000, 1"

八,stringr包

stringr包对字符串操作提供了一致的包装,使用R操作字符串,基本上使用该包提供的函数就够了,在使用之前,首先引用stringr包:

library(stringr)

1,字符串长度

str_length 函数计算字符串的长度

> str_length("vic")
[] 3

2,截取子串

str_sub函数用于截取子字符串,start和end用于指定子串的开始位置和结束位置,在end中,如果使用负数,表示从字符串的末尾向前计数。

str_sub(string, start = 1L, end = -1L)

例如,从字符串向量中截取子串:

> x <- c("abcdef", "ghifjk")
> str_sub(x, , )
[] "c" "i"
> str_sub(x, , -)
[] "cde" "ifj"

3,字符的序号

获取字符向量中字符的序号

x <- c("y", "i", "k")
str_order(x)
#> []

4,对字符进行排序

x <- c("y", "i", "k")
str_sort(x)
#> [] "i" "k" "y"

5,扩展字符串

str_pad(string, width, side = c("left", "right", "both"), pad = " ")

6,去掉字符串两端的空格

str_trim(string, side = c("both", "left", "right"))

7,转换大小写

str_to_upper(string, locale = "en")
str_to_lower(string, locale = "en")
str_to_title(string, locale = "en")

8,按照模式匹配

str_detect函数按照指定的模式查找字符串,返回逻辑值;str_subset返回匹配模式的字符串:

str_detect(string, pattern)
str_subset(string, pattern)
str_which(string, pattern)

9,分割字符串

str_split函数按照指定的模式分割字符串:

str_split(string, pattern, n = Inf, simplify = FALSE)

10,统计匹配模式的数量

str_count函数用于统计字符串中的指定字符的数量:

str_count(string, pattern = "")

11,替换字符

str_replace(string, pattern, replacement)
str_replace_all(string, pattern, replacement)

详细信息,请阅读stringr包的官方文档:Introduction to stringr

参考文档:

Introduction to stringr

R语言学习 第五篇:字符串操作的更多相关文章

  1. R语言学习 第四篇:函数和流程控制

    变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用.在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...

  2. 在R语言中使用Stringr进行字符串操作

    今天来学习下R中字符串处理操作,主要是stringr包中的字符串处理函数的用法. 先导入stringr包,library(stringr),require(stringr),或者stringr::函数 ...

  3. R语言学习 第十一篇:日期和时间

    R语言的基础包中提供了三种基本类型用于处理日期和时间,Date用于处理日期,它不包括时间和时区信息:POSIXct/POSIXlt用于处理日期和时间,其中包括了日期.时间和时区信息.R内部在存储日期和 ...

  4. R语言学习 第八篇:常用的数据处理函数

    Basic包是R语言预装的开发包,包含了常用的数据处理函数,可以对数据进行简单地清理和转换,也可以在使用其他转换函数之前,对数据进行预处理,必须熟练掌握常用的数据处理函数,本文分享在数据处理时,经常使 ...

  5. R语言学习 第十篇:操作符

    运算符是R语言中最基础的存在,熟悉运算符的使用,是熟练使用R处理数据的基础,操作符,顾名思义,是对数据进行运算的符号,R有自己的一套操作符,实现变量的赋值,引用,运算等功能. 一,赋值符号 为变量赋值 ...

  6. R语言学习 第三篇:数据框

    数据框(data.frame)是最常用的数据结构,用于存储二维表(即关系表)的数据,每一列存储的数据类型必须相同,不同数据列的数据类型可以相同,也可以不同,但是每列的行数(长度)必须相同.数据框的每列 ...

  7. R语言学习 第七篇:列表

    列表(List)是R中最复杂的数据类型,一般来说,列表是数据对象的有序集合,但是,列表的各个元素(item)的数据类型可以不同,每个元素的长度可以不同,是R中最灵活的数据类型.列表项可以是列表类型,因 ...

  8. R语言学习 第十篇:包

    包(Package)是实现特定功能的.预先写好的代码库(library),通俗地说,包是含有函数.数据等的功能模块.R拥有大量的软件包,许多包都是由某一领域的专家编写的,但并不是所有的包都有很高的质量 ...

  9. ES6学习笔记<五> Module的操作——import、export、as

    import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...

随机推荐

  1. 用例设计之API用例覆盖准则

    基本原则 本文主要讨论API测试的用例/场景覆盖,基本原则如下: 用户场景闭环(从哪来到哪去) 遍历所有的实现逻辑路径 需求点覆盖 覆盖维度 API协议(参数&业务场景) 中间件检查 异常场景 ...

  2. git版本超前了N个版本且落后了N个版本的解决办法

    当遇到该问题的时候,一般情况下我们会首先拉取,紧接着就出现了一系列问题………… 其实当输入命令,git pull的时候,会报错,这时瞬间就感到凌乱了&……*%%*%………… 莫慌…… 这时输入 ...

  3. Django开发笔记(一)

    Django开发笔记(一) 标签(空格分隔): Django Python 1. 创建并运行Django项目 创建开发环境 安装Django pip install django==version 执 ...

  4. ndk的注意事项

    从开源网站下载的源码,需要自己编译c源码成so类库.当时用Android studio 运行总是报错"finished with non-zero exit value 2"报错定 ...

  5. AD账号解锁

    Get-ADUser -Filter * -Properties *  -SearchBase "dc=uxin,dc=youxinpai,dc=com"| ? {$_.locke ...

  6. Centos/Linux下调整分区大小(以home和根分区为例)

    转载于  https://blog.csdn.net/qq_33233768/article/details/65437609   在安装新系统的时候,有时候没法预估或者说错误的划分了分区大小,常常会 ...

  7. MyEclipse免费使用

    import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.SimpleDateFormat; im ...

  8. Git如何永久删除文件(包括历史记录)

    有些时候不小心上传了一些敏感文件(例如密码), 或者不想上传的文件(没及时或忘了加到.gitignore里的), 而且上传的文件又特别大的时候, 这将导致别人clone你的代码或下载zip包的时候也必 ...

  9. arrayfun用法(转)

    http://blog.sina.com.cn/s/blog_7cf4f4460101bnhh.html 利用arrayfun函数可以避免无谓的循环,从而大大提高代码的简介性.1.A=ARRAYFUN ...

  10. 微软撤回sharepoint 2013 sp1

    微软撤回sharepoint 2013 sp1, 现在已经不能下载32bits和64bits. 以下是我们发现的问题(未必一定和SP1有关) - Search SSA managed metadata ...