R语言批量修改多CSV文件abundance列为对应文件名前缀格式的问题
修正后的R代码及问题说明
原有代码的问题
- 正则表达式使用错误:
sub(".*", "", x)会将文件名全部替换为空字符串,无法提取到文件名前缀 - 列名修改范围错误:原代码会给所有列都添加文件名前缀,不符合仅修改abundance列的需求
- 缺少文件回写步骤:仅将修改后的数据存在内存列表中,没有保存回原CSV文件
可直接运行的修正代码
# 读取目录下所有后缀为.csv的文件 filenames <- list.files(pattern = "\\.csv$") lapply(filenames, function(x) { # 读取单个CSV文件 df <- read.csv(x) # 提取文件名前缀(去除.csv后缀) file_prefix <- sub("\\.csv$", "", x) # 仅修改abundance列的列名 colnames(df)[colnames(df) == "abundance"] <- paste0(file_prefix, "_abundance") # 保存修改后的数据回原文件,不写入额外行号列 write.csv(df, x, row.names = FALSE) })
注意说明
如果你的CSV文件内容包含逗号、空格等特殊字符,可以删掉write.csv里的quote = FALSE参数,避免保存后格式错乱。
内容的提问来源于stack exchange,提问作者Loay Jabre
相关产品推荐
相关产品推荐

