使用R导入csv文件并将数据框重命名为df_#及批量绘图需求
解决方案
1. 正确重命名数据框为df_#格式
你的原代码问题在于直接把完整文件名拼到了df后面,需要先提取文件名里的数字编号,再生成目标名称。用正则表达式可以精准提取编号:
# 获取所有符合`name_#.csv`格式的文件 file_list <- list.files(pattern = "^name_\\d+\\.csv$") # 循环导入并命名为df_1、df_2... for (file in file_list) { # 提取文件名中的数字部分 num <- sub("name_(\\d+)\\.csv", "\\1", file) # 创建`df_+数字`的变量并导入数据 assign(paste0("df_", num), read.csv(file, skip = 15)) }
2. 更合理的文件管理与分组绘图方案
直接创建大量单独的df_#变量不利于后续批量处理,更推荐把所有数据框存入一个列表,分组、绘图会更高效:
步骤1:将所有数据存入列表
# 导入所有数据到列表,列表名称保留数字编号 dfs <- lapply(file_list, function(file) { read.csv(file, skip = 15) }) names(dfs) <- sub("name_(\\d+)\\.csv", "\\1", file_list) # 此时dfs$"1"对应name_1.csv的数据,dfs$"2"对应name_2.csv,以此类推
步骤2:按每3个一组批量绘图
用ggplot2绘图(推荐)
假设你的时间列叫time,数值列叫value,按需修改列名:
library(ggplot2) # 计算分组数(每3个一组) group_num <- ceiling(length(dfs) / 3) for (g in 1:group_num) { # 取出当前组的3个数据框 start_idx <- (g-1)*3 + 1 end_idx <- min(g*3, length(dfs)) current_group <- dfs[start_idx:end_idx] # 合并数据框并添加分组标识(区分不同重复组) combined_data <- do.call(rbind, lapply(names(current_group), function(id) { data <- current_group[[id]] data$group_id <- paste0("重复", id) return(data) })) # 绘制时间序列对比图 p <- ggplot(combined_data, aes(x = time, y = value, color = group_id)) + geom_line() + labs(title = paste0("第", g, "组时间序列对比"), x = "时间", y = "数值") + theme_minimal() # 打印或保存图 print(p) # ggsave(paste0("group_", g, ".png"), p) }
用基础绘图包绘图
# 计算分组数(每3个一组) group_num <- ceiling(length(dfs) / 3) for (g in 1:group_num) { start_idx <- (g-1)*3 + 1 end_idx <- min(g*3, length(dfs)) current_group <- dfs[start_idx:end_idx] # 初始化画布 plot(current_group[[1]]$time, current_group[[1]]$value, type = "l", col = 1, main = paste0("第", g, "组时间序列对比"), xlab = "时间", ylab = "数值") # 依次添加另外两条线 if (length(current_group) >= 2) { lines(current_group[[2]]$time, current_group[[2]]$value, col = 2) } if (length(current_group) >= 3) { lines(current_group[[3]]$time, current_group[[3]]$value, col = 3) } # 添加图例 legend("topright", legend = paste0("重复", names(current_group)), col = 1:length(current_group), lty = 1) }
内容的提问来源于stack exchange,提问作者Ash
相关产品推荐
相关产品推荐

