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

如何修改R代码查找文件夹中倒数第二个被修改的文件

问题解答

核心结论

无法通过给which.max传入-1参数实现需求:which.max函数的作用是返回向量中第一个最大值的下标,没有支持偏移取值的入参,需要调整代码逻辑实现。

代码修改方案

场景1:按目录分组,取每个目录下倒数第二新的文件

修改原tapply内的匿名函数逻辑,对文件修改时间排序后取倒数第二个下标,同时增加边界判断避免目录下文件不足2个时报错:

files <- list.files(path="MYFILEPATH",pattern="files.xls",full.names = TRUE,recursive = TRUE)
dirs <- dirname(files)
# 每个目录取倒数第二新的文件
second_lastfiles <- tapply(files, dirs, function(v) {
  # 获取文件修改时间
  mtimes <- file.mtime(v)
  # 按时间升序排序生成索引
  sorted_idx <- order(mtimes)
  # 目录下文件数≥2才取倒数第二,否则返回NA,可根据需求调整返回逻辑
  if (length(sorted_idx) >= 2) {
    v[sorted_idx[length(sorted_idx)-1]]
  } else {
    NA_character_
  }
})

场景2:全局取指定路径下倒数第二新的文件

修改原全局查询逻辑,对文件修改时间排序后取倒数第二个下标:

File_List <- file.info(list.files("//MYFILEPATH", full.names = T))
# 按修改时间升序排序的索引
sorted_mtime_idx <- order(File_List$mtime)
# 取倒数第二个索引对应的路径
Path_Of_Interest <- if (length(sorted_mtime_idx) >=2 ) {
  rownames(File_List)[sorted_mtime_idx[length(sorted_mtime_idx)-1]]
} else {
  NA_character_
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:15:04