You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言比对主字符串与字符串列表 将差异字符转为小写

R语言逐位置比对字符串的大小写转换实现

实现思路

  • 先将主字符串拆分为按位置索引的单字符向量,作为比对基准
  • 逐个处理字符串列表中的元素:同样拆分为单字符向量,先校验长度和主字符串一致,避免位置错位
  • 逐位置做字符匹配:如果当前位置字符和主字符串对应位置字符完全一致,保留该字符原有大小写;如果不一致,将该位置字符转换为小写
  • 将处理完成的单字符向量重新拼接为完整字符串,汇总所有结果返回

可运行代码

compare_and_convert <- function(master_str, target_strs) {
  # 拆分主字符串为单字符基准向量
  master_chars <- strsplit(master_str, "")[[1]]
  n_master <- length(master_chars)
  
  vapply(target_strs, function(target) {
    target_chars <- strsplit(target, "")[[1]]
    # 长度异常处理
    if (length(target_chars) != n_master) {
      warning(paste0("字符串`", target, "`长度与主字符串不一致,返回NA"))
      return(NA_character_)
    }
    # 逐位置比对转换
    res_chars <- ifelse(
      target_chars == master_chars,
      target_chars,
      tolower(target_chars)
    )
    # 拼接为完整字符串
    paste(res_chars, collapse = "")
  }, FUN.VALUE = character(1), USE.NAMES = FALSE)
}

效果验证

对应给出的示例运行结果如下:

# 示例1
master <- "AGG"
test_list1 <- c("ATT", "AGT")
compare_and_convert(master, test_list1)
# > [1] "Att" "AGt"

# 示例2
test_list2 <- c("GGA")
compare_and_convert(master, test_list2)
# > [1] "gGa"

如果需要忽略主字符串本身的大小写做匹配(比如主串为小写"agg"时也认为"A"和首字符匹配),只需要把比对条件修改为toupper(target_chars) == toupper(master_chars)即可,其余逻辑不变。

内容的提问来源于stack exchange,提问作者Ana Fsshaie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:27:16