对于一个以"pr"开头,后跟多个"r"的模式,例如,pr, prr, pr...r.,我希望分割非模式字符串和所有模式字符串,而不删除模式.strsplit()执行该操作,但删除所有pr..r.然而,stringr::str_extract_all提取了带图案的字符串,但没有了非图案字符串.

有没有一种方法可以简单地保留所有字符串,但只保留一个有图案的字符串?

x<-c("zprzzzprrrrrzpzr")

"z" "pr" "zzz" "prrrrr" "zpzr" # desired output; keep original character order

推荐答案

这有点老套,但您可以做一个替换,用一些分隔符分隔出您想要的值,然后在该分隔符上拆分.例如

unlist(strsplit(gsub("(pr+)","~\\1~", x), "~"))
# [1] "z"      "pr"     "zzz"    "prrrrr" "zpzr" 

如果你的字符串中没有"~"的话,这将很好用.

R相关问答推荐

计算转换的次数

将收件箱变量传递给ggplot 2函数

如何使用文本表达来子集数据

在ggplot的注释表格中突出显示最大值

在数据表中呈现数学符号

提取R中值和列名的所有可能组合

次级y轴R gggplot2

过滤器数据.基于两列的帧行和R中的外部向量

如何使用按钮切换轨迹?

如何通过Docker部署我的shiny 应用程序(多个文件)

在GGPLATE中将突出的点放在前面

如何在一次运行中使用count进行多列计数

如何使用列表中多个列表中的第一条记录创建数据框

根据元素和前一个值之间的差值过滤矩阵的元素

R函数,用于生成伪随机二进制序列,其中同一数字在一行中不出现超过两次

在使用tidyModels和XGBoost的二进制分类机器学习任务中,所有模型都失败

如何将SAS数据集的列名和列标签同时包含在r中GT表的表首?

正则表达式在第二个管道和第二个T之后拆分R中的列

计算使一组输入值最小化的a、b和c的值

我需要使用ggplot2制作堆叠条形图