R语言如何移除下划线分隔字符串中连续重复的相邻词项
R语言实现:自动移除下划线分隔字符串中的连续重复词
实现逻辑
- 将输入字符串按下划线拆分为独立词项
- 逐个比对相邻词项,仅保留与前一个词项不重复的内容
- 将保留的词项重新用下划线拼接为结果字符串,全程无需预先指定任何固定词项
通用函数代码
remove_consecutive_dup <- function(str_vec) { vapply(str_vec, function(s) { # 按下划线拆分单个字符串 word_parts <- strsplit(s, "_", fixed = TRUE)[[1]] # 标记需要保留的词:第一个词必保留,后续词仅在和前一个词不同时保留 keep_mask <- c(TRUE, word_parts[-1] != word_parts[-length(word_parts)]) # 拼接成最终字符串 paste(word_parts[keep_mask], collapse = "_") }, FUN.VALUE = character(1L), USE.NAMES = FALSE) }
效果验证
用题目给出的示例测试:
# 示例输入 input <- c( "ethnicity_ethnicity_selected_choice", "child_1_child_child_pid" ) # 调用函数 remove_consecutive_dup(input)
运行输出和期望结果完全一致:
[1] "ethnicity_selected_choice" "child_1_child_pid"
说明:该函数对连续出现2次以上的重复词同样生效,例如输入
"x_x_x_y_y_z",处理后会得到"x_y_z"。
内容的提问来源于stack exchange,提问作者its.me.adam
相关产品推荐
相关产品推荐

