我正在尝试向R中的数据集添加一列。该列应该是名称列的首字母。我正在尝试使用lapply
并传入函数来获取首字母 - 但是,我无法使此正则表达式起作用。
pattern <- "(\b[a-zA-Z])"
str<-"MICHAEL, JENSON F"
m <- regexpr(pattern,str,perl=TRUE)
regmatches(str,m)
返回字符(0)
如何让R返回字符串匹配列表?我希望regmatches返回M J和F.
答案 0 :(得分:4)
有两个问题:\b
必须转义,您应该使用gregexpr
代替regexpr
,因为后者只返回第一个匹配。
pattern <- "(\\b[a-zA-Z])"
str<-"MICHAEL, JENSON F"
m <- gregexpr(pattern,str,perl=TRUE)
regmatches(str,m)[[1]]
# [1] "M" "J" "F"
答案 1 :(得分:2)
刚刚找到了stringr库。
str_match_all(str, "(\\b[a-zA-Z])[a-zA-Z]* ?")