【发布时间】:2018-08-31 17:11:46
【问题描述】:
我有一个带有一些分类变量的 data.frame。假设sentences 是这些变量之一:
sentences <- c("Direito à participação e ao controle social",
"Direito a ser ouvido pelo governo e representantes",
"Direito aos serviços públicos",
"Direito de acesso à informação")
对于每个值,我想只提取每个单词的第一个字母,忽略该单词是否有 4 个字母或更少(e、de、à、a、aos、ser、pelo),我的目标是创建首字母缩略词变量。我希望得到以下结果:
[1] "DPCS", "DOGR", "DSP", "DAI
我尝试使用 stringr 和创建的正则表达式模式 here 创建一个模式子集:
library(stringr)
pattern <- "^(\b[A-Z]\w*\s*)+$"
str_subset(str_to_upper(sentences), pattern)
但我在创建pattern 对象时出错:
Error: '\w' is an escape sequence not recognized in the string beginning with ""^(\b[A-Z]\w"
我做错了什么?
提前感谢您的帮助。
【问题讨论】:
-
样本字符向量的预期结果是什么?
-
我编辑了问题以使其清楚
-
你需要在 R 中使用双重转义。像 "\\b" 而不是 "\b"。
-
map_chr(str_extract_all(sentences,'\\b(\\w)(?=\\w{4,})'),paste,collapse="")? -
@Aaron 修复了它。 Here you go