如何逐个替换字符串指定字符,每次替换生成一个新字符串
解决方法
我们可以通过编写自定义函数,对每个字符串中的目标字符(Y/S/T)逐个单独替换,生成对应的新字符串。以下是具体实现步骤:
1. 定义输入字符串向量
input_strings <- c("YSAHEEHHYDK", "HEHISSDYAGK", "TFAHTESHISK", "ISLGEHEGGGK", "LSSGYDGTSYK", "FGTGTYAGGEK", "VGASTGYSGLK", "TASGVGGFSTK", "SYASDFGSSAK", "LYSYYSSTESK")
2. 编写单字符串替换函数
该函数会遍历字符串的每个字符,仅对当前位置的Y/S/T进行替换,生成新字符串:
generate_single_replacements <- function(s) { # 将字符串拆分为单个字符 chars <- strsplit(s, "")[[1]] replacements <- list() # 遍历每个字符位置 for (i in seq_along(chars)) { current_char <- chars[i] # 检查是否为目标字符 if (current_char %in% c("Y", "S", "T")) { modified_chars <- chars modified_chars[i] <- paste0("p", current_char) # 合并修改后的字符为字符串并加入结果列表 replacements <- c(replacements, paste(modified_chars, collapse = "")) } } # 将列表转为向量返回 unlist(replacements) }
3. 应用函数到所有输入字符串
使用lapply将函数应用到每个字符串,得到每个原字符串对应的所有单替换结果:
# 生成结果列表,每个元素对应原字符串的所有替换版本 result_list <- lapply(input_strings, generate_single_replacements) # 为列表元素命名,方便对应原字符串 names(result_list) <- input_strings
示例输出
以原字符串"YSAHEEHHYDK"为例,运行函数后得到的结果为:
result_list[["YSAHEEHHYDK"]] # 输出: # [1] "pYSAHEEHHYDK" "YpSAHEEHHYDK" "YSAHEEHHpYDK"
原字符串"HEHISSDYAGK"的替换结果:
result_list[["HEHISSDYAGK"]] # 输出: # [1] "HEHIpSSDYAGK" "HEHISpSDYAGK" "HEHISSDpYAGK"
内容的提问来源于stack exchange,提问作者Pavel Shliaha
相关产品推荐
相关产品推荐

