R 字符串处理函数
用R来处理字符串数据并不是一个很好的选择,还是推荐使用Perl或者Python等语言。不过R本身也提供了一些常用的字符串处理函数,这篇文章就对这些字符串函数做一个简单的总结,具体各个函数的使用方法还是要参考R的帮助文档。
- 取子字符串
substring(text, first, last=1000000 )
x为字符串向量。两个函数的不同之处在于函数substr()必须指定子字符串的起始位置和结束位置;而substring()可以不用指定结束位置,默认为1000000,如果字符串的长度小于1000000,则默认为取到字符串的结尾处。
> substr("sinablog",2,4)
[1] "ina"
> substring("sinablog",2,4)
[1] "ina"
> substring("sinablog",5)
[1] "blog"
> substr("sinablog",5,10)
[1] "blog"
另一个例子,此时x是一个含有多个元素的字符串向量:
> x <- c("asfef", "qwerty", "yuiop[", "b", "stuff.blah.yech")
> substring(x, 2, 5)
[1] "sfef" "wert" "uiop" "" "tuff"
- 字符串替换
substring(text, first, last = 1000000)<-value
同样的,substr必须指定开始处,结尾处,而substring结尾处默认为1000000,基本大于大多数的字符串长度,可以不用指定。
> x <- c("asfef", "qwerty", "yuiop[", "b", "stuff.blah.yech")
> substring(x, 2) <- c("..", "+++","test","test","test")
> x
[1] "a..ef" "q+++ty" "ytest[" "b" "stest.blah.yech"
> substr(x, 2,4) <- c("..", "+++","test","test","test")
> x
[1] "a..ef" "q+++ty" "ytest[" "b" "stest.blah.yech"
- 字符串拆分
其中x为待拆分的字符串向量,split拆分模式(可以使用正则表达式);fixed为TRUE表示精确匹配,否则表示可以使用正则表达式;perl为TRUE表示要是用Perl兼容正则表达式;由于可以使用正则表达式,所以一些特殊字符有特殊的含义,在使用的时候要注意对特殊字符的转义。
> strsplit("a.b.c", ".")
[[1]]
[1] "" "" "" "" ""
这是因为在正则表达式中,点“.”是通配符,表示任意的单个字符。而要想得到普通意义上的结果,要使用两个反斜杠"\\"对通配符“.”进行转义(这是windows下的试验,由于手边没有linux服务器,没有测试linux下是使用一个反斜杠还是两个,猜测是一个即可)或者使用精确匹配(即限定参数fixed=TRUE)来实现。
另外需要说明一点的是:直接使用split函数得到的结果是一个列表,如果希望得到一个向量,可以使用
unlist函数。
> unlist(strsplit("a.b.c", "\\."))
[1] "a" "b" "c"
> unlist(strsplit("a.b.c", ".",fixed=TRUE))
[1] "a" "b" "c"
若希望得到各个字母组成的字符串向量:
unlist(strsplit("abc",""))
[1] "a" "b" "c"
- 字符串连接
其中sep表示不同的字符串之间的分隔符,默认为空格。
> paste("a","b","c",sep=".")
[1] "a.b.c"
> paste("A", 1:6)
[1] "A 1" "A 2" "A 3" "A 4" "A 5" "A 6"
- 获取字符串的长度
其中type表示测量单位,有三个选择:chars,bytes,width。
nzchar(x)用于判断一个变量的长度是否为0。
需要注意的是,对于缺失值NA,nzchar()的结果为TRUE,而函数nchar()的返回结果为2。所以在对字符串进行测量之前,最好先使用is.na()函数判断一下是否是NA值。
> x<-"sinablog"
> nchar(x)
[1] 8
> nzchar(x)
[1] TRUE
> x<-NA
> is.na(x)
[1] TRUE
> nchar(x)
[1] 2
> nzchar(x)
[1] TRUE
- 从左端起取字符串的特定长度子串
width为要取的长度,如果width的值大于字符串x的长度,则默认取到x的结尾。
> strtrim(c("abcdef", "abcdef", "abcdef"), c(1,5,10))
[1] "a" "abcde" "abcdef"
在上面提到了正则表达式,这是一个处理文本数据的强大工具,但是还是老话,R的优势并不在这里,还是推荐使用Perl或者Python等其它语言(特别是Perl)。不过,R也同样提供了一些函数可以使用正则表达式,具体的讨论就放到下一篇博文里吧!
R 字符串处理函数的更多相关文章
- R语言中的字符串处理函数
内容概览 尽管R是一门以数值向量和矩阵为核心的统计语言,但字符串有时候也会在数据分析中占到相当大的份量. R语言是一个擅长处理数据的语言,但是也不可避免的需要处理一些字符串(文本数据).如何高 ...
- 【R笔记】R语言中的字符串处理函数
内容概览 尽管R是一门以数值向量和矩阵为核心的统计语言,但字符串同样极为重要.从医疗研究数据里的出生日期到文本挖掘的应用,字符串数据在R程序中使用的频率非常高.R语言提供了很多字符串操作函数,本文仅简 ...
- R语言之——字符串处理函数
nchar 取字符数量的函数 length与nchar不同,length是取向量的长度 # nchar表示字符串中的字符的个数 nchar("abcd") [1] 4 # leng ...
- JS字符串格式化函数 string.format
原生JS写的仿C#的字符串format函数,在此基础上又增加了便于JS使用的字面量对象参数. 参照C#中的规则,调用的时候会检测字符串格式,如果字符串格式不规范,或者传入的参数为null或undefi ...
- C语言字符串处理函数
函数名: strcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include < ...
- 字符串分割函数(New)
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Form ...
- Ruby:字符串处理函数
字符串处理函数1.返回字符串的长度 str.length => integer 2.判断字符串中是否包含另一个串 str.include? other_str => true or fal ...
- PHP中常用的字符串格式化函数总结
注意:在PHP中提供的字符串函数处理的字符串,大部分都不是在原字符串上修改,而是返回一个格式化后的新字符串. 一.取出空格和字符串填补函数 空格也是一个有效的字符,在字符串中也会占据一个位置.用户在表 ...
- C语言字符串操作函数
1.函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include < ...
随机推荐
- 【BZOJ-1336&1337】Alie最小圆覆盖 最小圆覆盖(随机增量法)
1336: [Balkan2002]Alien最小圆覆盖 Time Limit: 1 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 1573 ...
- 【codevs1043】 方格取数
http://codevs.cn/problem/1043/ (题目链接) 题意 N*N的方格,每个格子中有一个数,寻找从(1,1)走到(N,N)的两条路径,使得取到的数的和最大. Solution ...
- Android成长日记-ProgressBar的设计
ProgressBar的关键属性 Android:max=”100” - ---最大显示进度 Android:progress=”50”----第一显示进度 Android:secondaryProg ...
- Joblogs——ContentValues的使用
ContentValues在Android的SQLiteDatabase.update (String table, ContentValues values, String whereClause, ...
- java-HashMap方法讲解
前言:Java8之后新增挺多新东西,在网上找了些相关资料,关于HashMap在自己被血虐之后痛定思痛决定整理一下相关知识方便自己看.图和有些内容参考的这个文章:http://www.importnew ...
- Spring--PropertyPlaceholderConfigurer
1. PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是 BeanFactoryPostProcessor接口的一个实现.PropertyPlaceho ...
- ArrayList用法
ArrayList属于collection->List接口下的一个集合类 针对数组的一些缺陷,集合框架提供了ArrayList集合类,对数组进行封装,实现了长度可变的数组,而且和数组彩用相同的存 ...
- Parallel Computing–Cannon算法 (MPI 实现)
原理不解释,直接上代码 代码中被注释的源程序可用于打印中间结果,检查运算是否正确. #include "mpi.h" #include <math.h> #includ ...
- cobbler工作流分析
官网 http://cobbler.github.io/ 介绍 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便, ...
- SQL Server 2012 学习笔记3 增查改删
现在举例几个"增查改删"的语句 select * from UserInfor --查找所有字段 select username,UserId from UserInfor -- ...