R语言如何循环处理多个同类dataframe,删除各DF列中对应文件名的指定字符串
你可以通过提取文件名中的编号动态生成待替换的匹配规则,完整的R实现代码如下:
# 加载字符串处理包,没有安装可以先运行 install.packages("stringr") library(stringr) # 1. 获取当前工作目录下所有test9到test15开头的csv文件 file_list <- list.files(pattern = "^test(9|1[0-5])\\.csv$") # 2. 循环遍历每个文件处理 for (file in file_list) { # 提取当前文件名中的数字编号 num <- str_extract(file, "\\d+") # 动态生成当前文件的匹配模式,末尾加\s*匹配目标字符串后多余的空格 pattern <- paste0("CASE TEST ", num, "\\s*") # 读取csv文件,关闭因子自动转换方便处理字符串 df <- read.csv(file, stringsAsFactors = FALSE) # 批量替换x和y列的目标字符串 df$x <- gsub(pattern, "", df$x) df$y <- gsub(pattern, "", df$y) # 保存处理后的文件,加processed_前缀和原文件区分,不需要区分可以直接写file覆盖原文件 write.csv(df, paste0("processed_", file), row.names = FALSE, quote = FALSE) }
如果你的原文件中x、y列默认读取为因子类型,也可以直接修改因子水平提升处理效率,替换部分代码如下即可:
# 因子类型列的替换实现 levels(df$x) <- gsub(pattern, "", levels(df$x)) levels(df$y) <- gsub(pattern, "", levels(df$y))
内容的提问来源于stack exchange,提问作者ngzongyi
相关产品推荐
相关产品推荐

