我对编码还很年轻,经常无法自己找出更好的功能或结果来完成某些任务。
我有一个关于使用 str_extract_all
后跟踪原始字符串的问题对于特定的模式。
这是一个名为“fruit”的示例数据。
我用过str_extract_all(fruit, "(.)\\1")
提取重复辅音,得到“pp”、“rr”、“pp”、“ll”、“pp”。
还通过 str_subset(fruit, "(.)\\1")
跟踪原始字符串(这些提取的结果) 。这是我得到的。
但是,我想知道“每个”提取的结果来自哪里。因此,使用 str_subset
无法捕获来自同一字符串的那些结果。以下数据框是我期望获得的数据。
我不确定我是否清楚地解释了我的问题。任何反馈和想法将不胜感激。
最佳答案
你的代码已经做了你想要的事情。您只需创建一个额外的列来存储 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/