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

R语言:根据文件名匹配文件路径并保留NA值的实现需求

R实现文件名与文件路径匹配(保留NA值、多匹配项分号分隔)

需求说明

  • 将File_names中的文件名与File_paths中的文件路径进行匹配
  • 保留NA值对应的行,不删除
  • 若一行包含多个用分号分隔的文件名,匹配到的路径也用分号分隔返回
  • 最终输出包含File_name和匹配后File_path的数据框

输入数据

File_paths <- c("C:/temp/1245~b~cat~v4.jpeg", "C:/temp/1245~b~dog~v4.jpeg", 
                "C:/temp/1245~b~cow~v4.jpeg", "C:/temp/1245~b~duck~v4.jpeg", 
                "C:/temp/1245~b~horse~v4.jpeg", "C:/temp/1245~b~goat~v4.jpeg")
File_names <- c("b~cat", "b~dog", "NA", "b~duck", "b~goat; b~horse", "NA", "b~cow")

解决方案代码

使用dplyr和stringr包实现需求,代码如下:

library(dplyr)
library(stringr)

# 构建结果数据框
result_df <- tibble(File_name = File_names) %>%
  mutate(
    # 拆分多文件名,NA值单独处理
    File_name_split = if_else(File_name == "NA", list(NA), str_split(File_name, "; ")),
    # 遍历每个文件名列表,匹配对应路径并合并
    File_path = map_chr(File_name_split, function(names) {
      if (is.na(names)) {
        NA_character_
      } else {
        matched_paths <- sapply(names, function(name) {
          File_paths[str_detect(File_paths, fixed(name))]
        })
        paste(matched_paths, collapse = "; ")
      }
    })
  ) %>%
  select(File_name, File_path)

# 查看输出结果
print(result_df, width = Inf)

代码解释

  1. 用tibble初始化数据框,保留原始File_name列
  2. str_split按; 拆分多文件名,NA值处理为包含NA的列表,保证后续遍历统一
  3. map_chr遍历每个文件名列表:
    • 若为NA,直接返回NA字符串
    • 非NA时,用str_detect(fixed(name))精准匹配包含对应文件名的路径,避免模糊匹配错误
    • 最后用paste将多个匹配路径合并为分号分隔的字符串
  4. 保留File_name和File_path两列,得到目标数据框

输出结果

# A tibble: 7 × 2
  File_name       File_path                                                                
  <chr>           <chr>                                                                    
1 b~cat           C:/temp/1245~b~cat~v4.jpeg                                               
2 b~dog           C:/temp/1245~b~dog~v4.jpeg                                               
3 NA              NA                                                                       
4 b~duck          C:/temp/1245~b~duck~v4.jpeg                                              
5 b~goat; b~horse C:/temp/1245~b~goat~v4.jpeg; C:/temp/1245~b~horse~v4.jpeg
6 NA              NA                                                                       
7 b~cow           C:/temp/1245~b~cow~v4.jpeg                                               

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:52:14