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

如何在R中按指定名单提取数据并分别保存为对应命名的Excel文件

R按指定姓名列表筛选行并导出为独立Excel文件的解决方案

问题根因

  • 不需要嵌套循环:两层循环会导致每筛选一个姓名的数据,就重复写入3个目标文件,write.xlsx默认不允许覆盖已存在文件,因此第一轮写入3个matt数据的文件后,第二轮写入就会触发文件已存在报错,循环终止,最终3个文件内容全是第一个人的数据
  • 拆分提取和保存逻辑时,answer变量只会保留最后一次筛选的结果,单独运行保存逻辑无法对应每个姓名的筛选结果

正确实现代码

基础循环写法(易理解)

首先确保已安装openxlsx包,没有的话先运行install.packages("openxlsx")

# 加载依赖包
library(openxlsx)

# 示例数据
x <- c("anna", "matt", "anna", "david", "anna", "jane")
data <- data.frame("name" = x, "case ref" = letters[1:6])
namelist <- c("matt", "david", "anna")

# 单循环完成筛选+导出
for (cur_name in namelist) {
  # 筛选当前姓名对应的所有行
  filter_df <- data[data$name == cur_name, ]
  # 导出为对应姓名命名的Excel,开启覆盖避免已存在文件报错
  write.xlsx(filter_df, file = paste0(cur_name, ".xlsx"), overwrite = TRUE)
}

简洁apply族写法

library(openxlsx)
# invisible用于屏蔽lapply的无意义返回值
invisible(lapply(namelist, function(cur_name) {
  write.xlsx(data[data$name == cur_name, ], paste0(cur_name, ".xlsx"), overwrite = TRUE)
}))

运行后会在当前工作目录生成matt.xlsx、david.xlsx、anna.xlsx三个文件,每个文件内容对应姓名的匹配行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:54:03