R使⽤正则表达式
R使⽤正则表达式
#R⾥⾯⾃带的正则表达式grep,grepl,前者返回的是索引,后者返回的是逻辑向量
telephone=c("123-23451", "1225-3123", "121-45672", "1332-1231", "1212-3212" ,"123456789")
grep('^[0-9]{4}-[0-9]{4}$',telephone)
output:[1] 2,4,5
telephone[grep('^[0-9]{3}-[0-9]{5}$',telephone)]
output:[1] "123-23451","121-45672"
# 如果你想选取除了以上两种的其他形式的⼦集,可以使⽤grepl()【可以说查异常值】
telephone[!grepl('^[0-9]{4}-[0-9]{4}$',telephone) & !grepl('^[0-9]{3}-[0-9]{5}$',telephone)]
output:[1] "123456789"
#stringr包的str_match()函数
#str_match(x1,x2);有两个参数x1,x2;x1表⽰正则表达式,⽽且只返回括号括起来的元素,x2表⽰数据,返回的值为在x2的基础上新增了匹配的圆括号⾥的元素,有⼏个圆括号就新增⼏列,如果没匹配到的,这⼀⾏全为NA。
fruits
[1] "apple:20"                "orange:missing"          "banana:30"
[4] "pear:sent to Jerry"      "watermelon:2"            "blueberry:12"
[7] "strawberry:sent to James"
library(stringr)
matches <- str_match(fruits,'^(\\w+):\\s?(\\d+)$')
matches
output:[1] matches
[,1]          [,2]        [,3]
[1,] "apple:20"    "apple"      "20"
[2,] NA            NA          NA
[3,] "banana:30"    "banana"    "30"
[4,] NA            NA          NA
[5,] "watermelon:2" "watermelon" "2"
[6,] "blueberry:12" "blueberry"  "12"
正则表达式获取括号内容
[7,] NA            NA          NA
#我现在想matches有效的⾏转为数据框结构
fruits_df <- data.it(matches[,-1]),stringAsFactor=FALSE)
fruits_df
output:
name number
1      apple    20
2    banana    30
3 watermelon      2
4  blueberry    12

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。