R学习笔记 第五篇:字符串操作
文本数据存储在字符向量中,字符向量的每个元素都是字符串,而非单独的字符。在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
参考文档:
R学习笔记 第五篇:字符串操作的更多相关文章
- R学习笔记 第五篇:数据变换和清理
在使用R的分组操作之前,首先要了解R语言包,包实质上是实现特定功能的,预先写好的代码库(library),R拥有大量的软件包,许多包都是由某一领域的专家编写的,但并不是所有的包都有很高的质量的,在使用 ...
- C语言学习笔记 (008) - C语言字符串操作总结大全(超详细)(转)
1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...
- python学习笔记-(五)字符串&字典
1.字符串操作 >>> name = ("my name is cc")#首字母大写 >>> print(name.capitalize()) ...
- Django学习笔记第五篇--实战练习一--查询数据库并操作cookie
一.启动项目: django-admin start mysite1 cd mysite1 python manage.py startapp loginapp 根据上文敲命令就可以创建好了一个项目结 ...
- R学习笔记 第四篇:函数,分支和循环
变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用.在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...
- Go语言学习笔记(五)文件操作
加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 文件读取 os.File 封装了文件相关操作 type File File代表一个打开的文件对象. func Cr ...
- R学习笔记 第三篇:数据框
数据框(data.frame)用于存储二维表(即关系表)的数据,每一列存储的数据类型必须相同,不同的数据列的数据类型可以相同,也可以不同,但是,每列的长度必须相同.数据框的每列可以有唯一的命名,在已创 ...
- python学习笔记(五)文件操作和集合
文件基本操作: 现有文件file.txt f=open('file.txt','r')#以只读方式打开一个文件,获取文件的句柄,如果是读的话,r可以不写,默认就是只读:文件不存在时,会报错 first ...
- ASP.NET Core 学习笔记 第五篇 ASP.NET Core 中的选项
前言 还记得上一篇文章中所说的配置吗?本篇文章算是上一篇的延续吧.在 .NET Core 中读取配置文件大多数会为配置选项绑定一个POCO(Plain Old CLR Object)对象,并通过依赖注 ...
随机推荐
- jdbc学习总结
jdbc学习总结: 一.简介: jdbc,直译为java连接数据库.实际为java为很好的操作数据库而提供的一套接口,接口的实现(即驱动)由各个数据库厂商提供. 二.知识要点: 连接5要素,3 ...
- [Gitlab运维系列]Gitlab 403 forbidden 并发引起IP被封
问题 带着团队使用Git,使用的是自搭建的Gitlab.但今天打开页面的时候显示的是空白页面,上面还有一次文本Forbidden. 原因 Gitlab使用rack_attack做了并发访问的限制. 解 ...
- 【疑问】用python写登录验证遇到的问题
最近开始断断续续学习python,今天加入博客园,作为新人,和各位老师们讨教了,以后多多照顾!为了大家能看清楚所以就截图了,文末尾附源码,说不定会有那位老师给我指教一番.############### ...
- Socket简单实现数据交互及上传
声明:本文为原创,如需转载请说明出处:http://www.cnblogs.com/gudu1/p/7669175.html 首先为什么要写这个呢?因为在几个月之前我还使用Socket做一个小项目,而 ...
- SpringBoot01 InteliJ IDEA安装、Maven配置、创建SpringBoot项目、属性配置、多环境配置
1 InteliJ IDEA 安装 下载地址:点击前往 注意:需要下载专业版本的,注册码在网上随便搜一个就行啦 2 MAVEN工具的安装 2.1 获取安装包 下载地址:点击前往 2.2 安装过程 到官 ...
- 张高兴的 UWP 开发笔记:应用内启动应用 (UWP Launch UWP)
需求:在 A 应用内启动 B 应用,如果 B 应用未安装则跳转应用商店搜索. 启动方式使用 Uri 启动,本文使用尽可能简单,并且能拿来直接用的代码.不涉及启动后的应用数据交互,如需深入了解,请戳 M ...
- win10 uwp 俄罗斯方块
俄罗斯方块是一个很经典的游戏,做一个UWP俄罗斯方块没有什么用,我想说的是移植,把经典游戏移植到UWP. 我的所有博客都是抄别人的,这个才是我自己写的.后台很多代码还是抄别人的,我想说的是我们之前有很 ...
- C++向量(08)
在数组生存期内,数组的大小是不会改变的.向量是一维数组的类版本,它与数组相似,其中的元素项总是连续存储的,但它和数组不同的是:向量中存储元素的多少可以在运行中根据需要动态地增长或缩小.向量是类模板,具 ...
- Hadoop完全分布式环境搭建
前言 本文搭建了一个由三节点(master.slave1.slave2)构成的Hadoop完全分布式集群(区别单节点伪分布式集群),并通过Hadoop分布式计算的一个示例测试集群的正确性. 本文集群三 ...
- Spring Bean装配方式
Spring装配机制 在xml中进行显示配置 在Java中进行显示配置 隐式bean发现机制和自动装配 自动化装配bean 组件扫描(component scanning),Spring会自动发现应用 ...