R语言如何提取字符串含连续重复字母的单词并统计最大重复次数
原有代码报错原因
strsplit()返回结果为列表,拆分后的单词存储在列表首个元素中,直接遍历列表会导致单次循环拿到全部单词的向量,而非单个单词str_extract_all()返回结果为列表,直接和character(0)做等值判断会生成长度为0的逻辑值,触发if条件的长度报错,应通过length()判断提取结果长度是否大于0
完整实现代码
同时实现两个需求:提取含连续重复字母的单词、统计字符最大连续重复次数
library(stringr) process_string <- function(input_text) { # 拆分输入字符串为独立单词 word_list <- unlist(strsplit(input_text, "\\s+")) target_words <- c() repeated_chars <- c() for (word in word_list) { # 提取单词中所有连续重复的字母片段 match_res <- str_extract_all(word, '([[:alpha:]])\\1+')[[1]] if (length(match_res) > 0) { target_words <- c(target_words, word) repeated_chars <- c(repeated_chars, match_res) } } # 计算最大连续重复次数,无重复时返回0 max_repeat <- ifelse(length(repeated_chars) == 0, 0, max(nchar(repeated_chars))) return(list( 含连续重复字母的单词 = target_words, 最大连续重复次数 = max_repeat )) }
测试验证
参考示例测试
res1 <- process_string("hello good home aboba") res1$含连续重复字母的单词 # 输出:"hello" "good" res1$最大连续重复次数 # 输出:2
你的测试文本验证
res2 <- process_string("tessst gfvdsvs bbbddsa daxz") res2$含连续重复字母的单词 # 输出:"tessst" "bbbddsa" res2$最大连续重复次数 # 输出:3
内容的提问来源于stack exchange,提问作者kostya ivanov
相关产品推荐
相关产品推荐

