r - 从str_extract_all的结果中找到原始字符串

标签 r stringr

我对编码还很年轻,经常无法自己找出更好的功能或结果来完成某些任务。 我有一个关于使用 str_extract_all 后跟踪原始字符串的问题对于特定的模式。

这是一个名为“fruit”的示例数据。

<表类=“s-表”> <标题> 索引 水果 <正文> 1 苹果 2 香蕉 3 草莓 4 菠萝 5 灯笼椒

我用过str_extract_all(fruit, "(.)\\1")提取重复辅音,得到“pp”、“rr”、“pp”、“ll”、“pp”。

还通过 str_subset(fruit, "(.)\\1") 跟踪原始字符串(这些提取的结果) 。这是我得到的。

<表类=“s-表”> <标题> 索引 水果 <正文> 1 苹果 2 草莓 3 菠萝 4 灯笼椒

但是,我想知道“每个”提取的结果来自哪里。因此,使用 str_subset无法捕获来自同一字符串的那些结果。以下数据框是我期望获得的数据。

<表类=“s-表”> <标题> 索引 水果 模式 <正文> 1 苹果 pp 2 草莓 rr 3 菠萝 pp 4 灯笼椒 ll 4 灯笼椒 pp

我不确定我是否清楚地解释了我的问题。任何反馈和想法将不胜感激。

最佳答案

你的代码已经做了你想要的事情。您只需创建一个额外的列来存储 str_extract_all 的输出,如下所示:

由于 str_extract_all() 返回一个列表,因此我们需要取消嵌套列表以成为行。

代码的最后一行是创建一个连续的索引(因为“banana”消失了,索引2​​也将消失)。

library(tidyverse)

fruit %>% 
  mutate(pattern = str_extract_all(Fruit, "(.)\\1")) %>% 
  unnest(pattern) %>%
  mutate(index = as.numeric(as.factor(index)))

# A tibble: 5 × 3
  index Fruit       pattern
  <dbl> <chr>       <chr>  
1     1 apple       pp     
2     2 strawberry  rr     
3     3 pineapple   pp     
4     4 bell pepper ll     
5     4 bell pepper pp   

关于r - 从str_extract_all的结果中找到原始字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71599906/

相关文章:

r - R中字符向量中的平均单词数

r - 在 R 中使用 str_extract 在带有正则表达式的子字符串之前提取数字

r - 使用 R 在字符串中只保留完全大写的单词

R正则表达式 - 提取以@符号开头的单词

r - 将线性模型abline添加到ggplot中的log-log图

r - 将日期中的月份中的第一天更改为第一天(01)

r - 整洁 : create key without rowwise()?

r - tidyverse 跨列连接字符不适用于 c_across

R、stringr - 使用单个命令替换向量所有元素中的多个字符

python - 二维核密度图的主要差异 : Seaborn and R