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

如何从R列表的data.frame中移除同一文件夹下的重复文件?

解决R列表中重复文件夹文件的保留问题

需求说明

处理包含多个data.frame的R列表,确保每个文件夹下仅保留一个文件;其中STATUS和XSTATUS对应的YELLOW文件夹各存在两个文件,需移除时间较早的条目(保留时间戳最新的文件)。

解决方案代码

library(tidyverse)

# 定义单个data.frame的清理函数
clean_df <- function(df) {
  df %>%
    mutate(
      # 提取文件夹名称(如RED、YELLOW)
      folder = str_extract(FileName, "(?<=//)[A-Z]+(?=/)"),
      # 提取时间戳(格式为YYYYMMDD_HHMMSS)
      timestamp = str_extract(FileName, "\\d{6}_\\d{6}")
    ) %>%
    # 按文件夹分组,保留时间戳最大的行(最新文件)
    group_by(folder) %>%
    filter(timestamp == max(timestamp)) %>%
    ungroup() %>%
    # 移除辅助列,还原原结构
    select(FileName)
}

# 遍历列表处理每个data.frame
output <- map(input, clean_df)

代码解释

  1. 关键信息提取:
    • 正则表达式(?<=//)[A-Z]+(?=/)精准匹配//与/之间的文件夹名称
    • \\d{6}_\\d{6}提取文件名中的日期时间戳,该格式的字符串可直接按大小判断时间先后
  2. 去重逻辑:按文件夹分组后,筛选出时间戳最大的条目,确保每个文件夹仅留一个最新文件
  3. 结构还原:移除临时生成的folder和timestamp列,保证输出与输入的data.frame结构完全一致

结果验证

运行代码后,output将与示例中的期望输出完全匹配:

  • MASTER无重复条目,保持原样
  • STATUS和XSTATUS中的YELLOW文件夹仅保留时间最新的文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:40:36