首先声明,用R来处理字符串数据并不是一个很好的选择,还是推荐使用Perl或者Python等语言。不过R本身除了提供了一些常用的字符串处理函数,也对正则表达式有了一定的支持,具体各个函数的使用方法还是要参考R的帮助文档。
sub()与gsub()使用正则表达式对字符串进行替换。
grep()、regexpr()、gregexpr()都是用于正则表达式的匹配,只是返回的结果格式有些不同。
几个函数的使用格式如下:
grep(pattern, x, ignorecase = FALSE, extended = TRUE,
perl = FALSE, value = FALSE, fixed = FALSE, useBytes = FALSE)
regexpr(pattern, text, ignorecase = FALSE, extended = TRUE,
perl = FALSE, fixed = FALSE, useBytes = FALSE)
gregexpr(pattern, text, ignorecase = FALSE, extended = TRUE,
perl = FALSE, fixed = FALSE, useBytes = FALSE)
sub(pattern, replacement, x,
ignorecase = FALSE, extended = TRUE, perl = FALSE,
fixed = FALSE, useBytes = FALSE)
gsub(pattern, replacement, x,
ignorecase = FALSE, extended = TRUE, perl = FALSE,
fixed = FALSE, useBytes = FALSE)
其中参数pattern表示用于匹配的正则表达式模式;参数x和text表示用于搜索的字符串向量;参数ignorecase为FALSE时,表示模式匹配是对字母的大小写敏感;参数VALUE也是一个逻辑变量,若为FALSE,grep函数会返回一个由匹配元素所在的位置组成的向量,若为TRUE,则返回由匹配元素本身组成的向量;参数replacement只在函数sub和gsub中出现,用于进行替换,如果fixed=FALSE,可通过\1,,\9来回溯引用匹配模式中由括号括起来的子表达式。如果参数perl=TRUE,还可以通过\U或\L将匹配字符转换成大写或小写。
一些示例代码:
> grep("[a-z]", letters)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
[25] 25 26
#参数value的使用
> grep("[a-z]", letters,value=TRUE)
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r"
[19] "s" "t" "u" "v" "w" "x" "y" "z"
#将字符串的首字母转换为大写
> gsub("^(\\w)", "\\U\\1", "a test of capitalizing", perl=TRUE)
[1] "A test of capitalizing"
#将字符串中每个单词的首字母转换为大写
> gsub("\\b(\\w)", "\\U\\1", "a test of capitalizing", perl=TRUE)
[1] "A Test Of Capitalizing"
#对电子邮件地址进行匹配为例,用一个正则表达式来匹配电子邮件地址是一项很常见的任务。
>text<-c("ben@sinacom","kate@sinacom","kate@sinacom","kate@sina12","kate@12sinacom")
> text
[1] "ben@sinacom" "kate@sinacom" "kate@sinacom"
[4] "kate@sina12" "kate@12sinacom"
> grep("(\\w+\\)\\w+@(\\w+\\)+[a-zA-Z]+",text)
[1] 1 3 5
函数有很多,比如字符串拼接函数,分割函数,打乱函数等。
1确保堆栈上至少有 n 个额外空位。 如果不能把堆栈扩展到相应的尺寸,函数返回假。 失败的原因包括将把栈扩展到比固定最大尺寸还大 (至少是几千个元素)或分配内存失败。 这个函数永远不会缩小堆栈; 如果堆栈已经比需要的大了,那么就保持原样。
2销毁指定 Lua 状态机中的所有对象 (如果有垃圾收集相关的元方法的话,会调用它们), 并且释放状态机中使用的所有动态内存。 在一些平台上,你可以不必调用这个函数, 因为当宿主程序结束的时候,所有的资源就自然被释放掉了。 另一方面,长期运行的程序,比如一个后台程序或是一个网站服务器, 会创建出多个 Lua 状态机。那么就应该在不需要时赶紧关闭它们。
比较两个 Lua 值。 当索引 index1 处的值通过 op 和索引 index2 处的值做比较后条件满足,函数返回 1 。 这个函数遵循 Lua 对应的 *** 作规则(即有可能触发元方法)。 反之,函数返回 0。 当任何一个索引无效时,函数也会返回 0 。
op 值必须是下列常量中的一个:
LUA_OPEQ: 相等比较 (==)
LUA_OPLT: 小于比较 (<)
LUA_OPLE: 小于等于比较 (<=)
3连接栈顶的 n 个值, 然后将这些值出栈,并把结果放在栈顶。 如果 n 为 1 ,结果就是那个值放在栈上(即,函数什么都不做); 如果 n 为 0 ,结果是一个空串。 连接依照 Lua 中通常语义完成()。
从索引 fromidx 处复制一个值到一个有效索引 toidx 处,覆盖那里的原有值。 不会影响其它位置的值。
void l ua_createtable (lua_State L, int narr, int nrec);
4创建一张新的空表压栈。 参数 narr 建议了这张表作为序列使用时会有多少个元素; 参数 nrec 建议了这张表可能拥有多少序列之外的元素。 Lua 会使用这些建议来预分配这张新表。 如果你知道这张表用途的更多信息,预分配可以提高性能。 否则,你可以使用函数
int lu a_dump (lua_State L,
lua_Writer writer,
void data,
int strip);
把函数导出成二进制代码块 。 函数接收栈顶的 Lu a 函数做参数, 然后生成它的二进制代码块。 若被导出的东西被再次加载, 加载的结果就相当于原来的函数。 当它在产生代码块的时候, lua_dump 通过调用函数 writer (r ) 来写入数据,后面的 data 参数会被传入 writer 。
5如果 strip 为真, 二进制代码块将不包含该函数的调试信息。
最后一次由 writer 的返回值将作为这个函数的返回值返回; 0 表示没有错误。
该函数不会把 Lua 函数d出堆栈。
希望能帮到你,谢谢!
\ | ( ) [ ] ^ $ +
数量词: + {m} {m,n} {m,}
stringr包里面的函数主要分为 6大类 ,包括:
接下来,我们将逐个演示这些函数的使用方法。
str_detect 可以检测pattern是否包括在某个字符串中,并返回TRUE和FALSE
str_count 检测pattern是否包括在某个字符串中的数目
str_which 告诉pattern的索引位置
str_locate 和 str_locate_all 返回pattern的开始和终止位置;
区别是 str_locate 只返回字符串里面的 首个匹配 到的pattern;
str_locate_all 返回字符串里面的 所有匹配 到的pattern;
str_view 和 str_view_all 函数都可以以可视化的方式,返回字符串中匹配到的pattern;
str_sub 在给定起始和终止参数的基础上对字符串进行截取或者替换
str_subset 返回pattern所在的字符串
str_extract 函数返回每个字符串中首个匹配到的pattern
str_extract_all 函数返回每个字符串中所有匹配到的pattern str_extract_all 函数中 simplify 默认为False,默认返回list;当 simplify 为True,则返回matrix
str_match 函数返回每个字符串中首个匹配到的pattern,以matrix的形式呈现
str_match_all 函数返回每个字符串中所有匹配到的pattern,以list的形式呈现
str_length 函数可以计算字符串的长度
str_pad 函数可以填充字符
str_trim 函数去除字符串的空白部分
str_squish 函数作用和 str_trim 函数作用一致,但除了去除字符串前、后的空格,它还可以去除字符串中间出现的重复的空格。这一点上, str_trim 函数无法办到。
str_trunc 函数可以把字符串切割到指定长度
str_replace 函数可以替换pattern为新的字符,仅限于第一个匹配到的
str_replace_all 函数可以替换所有匹配到的pattern
str_replace_na 可以将缺失值替换成‘NA’,这样naomit函数就无法将缺失值删除了
在 str_replace 和 str_replace_all 函数中,replacement可以用\1, \2中表示模式中的捕获
str_to_upper 函数可以将小写字母转成大写字母
str_to_lower 函数可以将大写字母转成小写字母
str_remove 可以移除字符串中首个匹配到的pattern
str_remove_all 可以移除字符串中所有匹配到的pattern
str_c 函数可以拼接多个字符串
str_dup 函数可以复制字符串
str_split 按照pattern分割字符串
str_split_fixed 按照pattern将字符串分割成指定个数
str_order 函数和 str_sort 函数都可以对字符串进行排序,两者之前的区别在于 前者返回排序后的索引(下标),而后者返回排序后的实际值 。
R 正则表达式
R语言与正则表达式
原来是它!正则表达式揪出生信分析中没有报错的内鬼错误
R语言教程
R for Data Science
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)