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 < ...
随机推荐
- BZOJ1049 [HAOI2006]数字序列0
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- struts2 Advanced Learning
catalog . 引言 . struts2的类型转换 . struts2的输入校验 . struts2的拦截器机制 . 使用struts2的Ajax支持 . struts2 OGNL表达式 . st ...
- UVA1555-- Garland(推导+二分)
题意:有n个灯,给定第一盏灯A的高度,接下去每盏灯的高度按照公式计算,求使所有灯都不会落在地上(允许碰触)的B的最低高度. uva 输出 double 用 %f,这一波坑的! #include < ...
- 基本概率分布Basic Concept of Probability Distributions 6: Exponential Distribution
PDF version PDF & CDF The exponential probability density function (PDF) is $$f(x; \lambda) = \b ...
- UVa 437 The Tower of Babylon(经典动态规划)
传送门 Description Perhaps you have heard of the legend of the Tower of Babylon. Nowadays many details ...
- js013-事件
js013-事件 本章内容 理解事件流 使用时间处理程序 不同的事件类型 JS与HTML之间的交互是通过实践实现的.时间就还文档或浏览器窗口发生的一些特定的交互 瞬间.可以使用侦听器来预定事件,以便时 ...
- 非阻塞socket学习,select基本用法
server #include <stdio.h> #include <winsock2.h> #include <iostream> #pragma commen ...
- mysql_query()与mysql_real_query()
mysql_query() cannot be used ” character, which mysql_query() interprets as the end of the statement ...
- e_msg_c_as_register_req-注册存储过程
TOP:BEGIN #Routine body goes here... IF EXISTS ( SELECT * FROM `global_account` WHERE `plantform_id` ...
- vim 快捷键 以及技巧
[root@centos01 biji]# vim + 1.txt 打开文件,光标定位到最后一行[root@centos01 biji]# vim +5 1.txt 打开文件,光标定位到第5行[roo ...