如何编写支持批量处理CSV、动态生成导出文件名的R函数
修改后的完整实现代码
# 加载R内置工具包,用于处理文件名 library(tools) removeEmptyCol <- function(file_path){ # 读取原始csv文件 df <- read.csv(file_path) # 识别全空列(列内所有值为NA或空字符串) empty_columns <- colSums(is.na(df) | df == "") == nrow(df) # 删除全空列 df <- df[, !empty_columns] # 将剩余NA值统一替换为空字符串 df[is.na(df)] <- "" # 生成符合要求的新文件名 file_main_name <- file_path_sans_ext(basename(file_path)) file_suffix <- file_ext(file_path) new_file_name <- paste0(file_main_name, "_modified.", file_suffix) # 导出处理后文件,row.names = FALSE避免写入R自动生成的行号 write.csv(df, new_file_name, row.names = FALSE) }
需求实现说明
- 自动沿用原文件名命名:通过
tools包的两个内置函数实现文件名拆分拼接,原文件为primary.csv时会自动生成primary_modified.csv,无需手动修改文件名参数。 - 批量处理操作:函数本身支持传入多个文件路径批量执行,使用示例如下:
# 读取当前工作目录下所有csv文件路径 all_csv <- list.files(pattern = "\\.csv$", full.names = TRUE) # 批量处理所有csv文件 lapply(all_csv, removeEmptyCol)
补充说明
如果需要将处理后的文件和原文件存在同一个目录,只需要修改新文件名生成逻辑即可:
# 替换原文件名生成代码段即可 new_file_name <- paste0(file_path_sans_ext(file_path), "_modified.", file_ext(file_path))
内容的提问来源于stack exchange,提问作者Pedram Azimzadeh
相关产品推荐
相关产品推荐

