有一個我不知道如何解決的問題。
您需要撰寫一個函式,該函式回傳包含重復字母的字串中的所有單詞及其在單詞中的最大重復次數。
從視覺上看,可以通過以下示例查看此階段:
"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
uj5u.com熱心網友回復:
您可以使用
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 ")) ))您將獲得最長的重復字母塊。
在線查看R 演示:
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
請參閱此正則運算式演示。正則運算式詳細資訊:
\p{L}*- 零個或多個字母(\p{L})- 捕獲到第 1 組中的一封信\1- 捕獲的字母的一次或多次重復\p{L}*- 零個或多個字母
uj5u.com熱心網友回復:
text = "hello good home aboba"
paste0(
grep("(.)\\1{1,}",
unlist(strsplit(text, " ")),
value = TRUE),
collapse = " ")
[1] "hello good"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/373418.html
