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

如何在R语言中匹配目录文件名与CSV列中的名称

解决R脚本中文件名匹配与下载状态统计的问题

步骤1:优化文件读取与数据框初始化

先修正初始代码,给数据框列命名,方便后续处理:

library(tidyverse)
library(readxl)

# 读取目录下的jpg相关文件并转为数据框
file_names <- list.files(path = "peaches/", 
                        pattern = "jpg",
                        all.files = TRUE,
                        full.names = TRUE,
                        recursive = TRUE) %>%
  as.data.frame(stringsAsFactors = FALSE) %>%
  rename(file_path = ".")  # 给列命名为file_path

步骤2:提取目标文件名子串

针对peaches//fruit/1234/12pink.jpg.txt这类路径,提取12pink核心名称:

# 精准匹配后缀提取:去掉末尾的.jpg.txt
file_names <- file_names %>%
  mutate(core_name = basename(file_path) %>%
           str_remove("\\.jpg\\.txt$"))

如果文件名后缀有变动,可用通用正则提取数字+字母的核心部分:

# 通用提取规则:匹配数字加字母的核心名称
file_names <- file_names %>%
  mutate(core_name = str_extract(basename(file_path), "\\d+[a-zA-Z]+"))

步骤3:匹配Excel数据并生成下载状态表

将提取的核心文件名与Excel中的名称列匹配,标记下载状态并导出结果:

# 读取Excel数据
name_data <- read_excel("peaches/all_data.xlsx")

# 匹配并生成下载状态表(替换"名称列"为你Excel中实际的列名)
download_status <- name_data %>%
  mutate(is_downloaded = ifelse(名称列 %in% file_names$core_name, "已下载", "未下载"))

# 导出结果为新表格
write_excel_csv(download_status, "peaches/下载状态统计.csv")

补充:关联已下载文件路径

如果需要保留已下载文件的完整路径,可改用左连接实现:

download_status <- name_data %>%
  left_join(file_names, by = c("名称列" = "core_name")) %>%
  mutate(is_downloaded = ifelse(!is.na(file_path), "已下载", "未下载"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:57:34