gpt4 book ai didi

r - R语言如何在字符串中查找连续字母的单词

转载 作者:行者123 更新时间:2023-12-04 16:35:33 35 4
gpt4 key购买 nike

有一个问题,我不知道如何解决。

您需要编写一个函数,返回包含重复字母的字符串中的所有单词及其在一个单词中的最大重复次数。

在视觉上,可以通过以下示例查看此阶段:"hello good home aboba" 处理后应该是hello good,并且给定字符串中一个字符的最大重复次数= 2

我写的代码试图找到重复的字符,并基于此从一个单独的数组中提取单词,但有些东西不起作用。帮助解决问题。

library(tidyverse)
library(stringr)

text = 'tessst gfvdsvs bbbddsa daxz'
text = strsplit(text, ' ')
text

new = c()
new_2 = c()

for (i in text){

new = str_extract_all(i, '([[:alpha:]])\\1+')
if (new != character(0)){
new_2 = c(new_2, i)
}
}
new
new_2

输出:

Error in if (new != character(0)) { : argument is of length zero
> new
[[1]]
[1] "sss"

[[2]]
character(0)

[[3]]
[1] "bbb" "dd"

[[4]]
character(0)

> new_2
NULL

最佳答案

你可以使用

new <- unlist(str_extract_all(text, "\\p{L}*(\\p{L})\\1+\\p{L}*"))
i <- max(nchar( unlist(str_extract_all(new, "(.)\\1+")) ))

使用 str_extract_all(text, "\\p{L}*(\\p{L})\\1+\\p{L}*") 您将提取包含的所有单词至少两个连续的相同字母,并且使用 max(nchar( unlist(str_extract_all(new, "(.)\\1+")) )) 你会得到最长的重复字母 block 。

参见 R demo online :

library(stringr)
text <- 'tessst gfvdsvs bbbddsa daxz'
new <- unlist(str_extract_all(text, "\\p{L}*(\\p{L})\\1+\\p{L}*"))
# => [1] "tessst" "bbbddsa"
i <- max(nchar( unlist(str_extract_all(new, "(.)\\1+")) ))
# => [1] 3

参见 this regex demo . 正则表达式详细信息:

  • \p{L}* - 零个或多个字母
  • (\p{L}) - 捕获到第 1 组的字母
  • \1+ - 捕获字母的一次或多次重复
  • \p{L}* - 零个或多个字母

关于r - R语言如何在字符串中查找连续字母的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70213057/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com