You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:50:26