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

如何在R中对/data文件夹内的文件列表使用sapply()分析?

解决文件移动后无法用sapply读取的问题

问题根源

你执行fs::file_move后,my_list里存储的还是原工作目录下的文件名(比如data_1.csv),但这些文件已经被转移到MYDIRECTORY/data目录中,当前工作目录下已不存在这些文件,所以read.csv找不到目标文件,抛出错误。

解决方法

方法1:重新获取目标目录的文件列表

文件移动完成后,从目标目录重新读取文件列表,通过full.names=TRUE参数获取完整文件路径:

library(dplyr)
library(fs)

# 生成示例文件
mtcars %>% write.csv("data_1.csv")
DNase %>% write.csv("data_2.csv")
iris %>% write.csv("data_3.csv")

my_list <- list.files(pattern = "data_")
fs::file_move(my_list, new_path = "MYDIRECTORY/data")

# 从目标目录读取带完整路径的文件列表
target_files <- list.files(path = "MYDIRECTORY/data", pattern = "data_", full.names = TRUE)
# 正常读取文件
sapply(target_files, read.csv)

方法2:为原文件名拼接目标路径

如果不想重新获取列表,直接将原文件名与目标目录路径拼接,生成完整路径后读取:

# 文件移动后拼接完整路径
full_paths <- file.path("MYDIRECTORY/data", my_list)
# 读取文件
sapply(full_paths, read.csv)

额外提示

  • 优先使用full.names=TRUE获取完整路径,避免不同目录下的文件路径混乱,脚本可读性和稳定性更强。
  • 不建议在脚本中频繁使用setwd()切换工作目录,容易引发路径相关的隐性错误,使用完整路径是更可靠的做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:25:19