R语言对多个.csv文件批量执行Loop代码的问题求助
原代码问题梳理
- 管道符书写错误,dplyr管道操作符为
%>%,原代码中的%>%%、%%>%属于语法错误 - lapply返回的是包含所有导入数据框的列表,无法直接对列表整体应用dplyr数据处理函数
- 未定义
filename变量,导出时无法匹配对应原文件名 - 读取csv文件优先使用
read.csv,避免read.table默认分隔符规则导致的读取异常
修正后可直接运行的代码
# 未安装dplyr的话先运行 install.packages("dplyr") library(dplyr) # 生成目录下所有.csv文件的列表,正则匹配更严谨,避免匹配到文件名带csv的非csv文件 filelist <- list.files(pattern = "\\.csv$") # 批量遍历所有文件完成处理+导出 lapply(filelist, function(x) { # 读取文件并保留指定列 df <- read.csv(x, header = TRUE)[, c(1,2,3,5)] # 执行列重命名、过滤、导出操作 df %>% rename(orf = protein) %>% filter(!grepl("sp", orf)) %>% write.csv(paste0("new_", x), row.names = FALSE) # row.names = FALSE用于避免导出多余的行号列 })
如果你的csv文件分隔符为分号而非逗号,将read.csv替换为read.csv2即可。如果需要将所有处理后的数据保存到一个列表统一调用,直接把上述lapply的运行结果赋值给自定义变量即可。
内容的提问来源于stack exchange,提问作者Loay Jabre
相关产品推荐
相关产品推荐

