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

如何用循环批量从多个df_x数据框提取指定单元格数据到new_df?

批量提取多个DataFrame指定单元格数据的R实现

方案一:使用列表 + lapply(推荐,更高效)

  1. 收集所有目标DataFrame到列表
    从全局环境中筛选出所有命名为df_1、df_2...的DataFrame,统一存入列表:
# 匹配所有以df_开头+数字的对象
df_list <- mget(ls(pattern = "^df_\\d+$"))
# 按数字顺序排序(确保和文件导入顺序一致)
df_list <- df_list[order(as.integer(sub("df_", "", names(df_list))))]
  1. 批量提取指定单元格
    定义提取函数,用lapply遍历列表每个元素,提取第13行的第2、4、6列数据:
extract_target <- function(df) {
  c(df[13, 2], df[13, 4], df[13, 6])
}

extracted_rows <- lapply(df_list, extract_target)
  1. 转换为新DataFrame
    将提取结果合并为最终的new_df,并设置列名:
new_df <- do.call(rbind, extracted_rows)
colnames(new_df) <- c("自定义列名1", "自定义列名2", "自定义列名3") # 替换为实际列名

方案二:使用for循环(适合新手理解)

如果更习惯循环逻辑,可以用以下代码:

# 初始化空DataFrame
new_df <- data.frame(matrix(ncol = 3, nrow = 0))
colnames(new_df) <- c("自定义列名1", "自定义列名2", "自定义列名3")

# 获取排序后的目标DataFrame名称
df_names <- ls(pattern = "^df_\\d+$")
df_names <- df_names[order(as.integer(sub("df_", "", df_names)))]

# 循环提取并添加行
for (name in df_names) {
  current_df <- get(name)
  new_row <- c(current_df[13, 2], current_df[13, 4], current_df[13, 6])
  new_df <- rbind(new_df, new_row)
}

关键优势

  • 后续新增Excel文件时,只要生成的DataFrame命名符合df_数字格式,代码会自动纳入处理,无需手动修改。
  • 避免手动重复代码带来的拼写错误和遗漏。

内容的提问来源于stack exchange,提问作者Cory Dowd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:45:11