R语言读取Excel工作表时如何迭代命名dataset数据集
修正原有代码的两处笔误
- 变量名大小写不一致:第一行定义的是
Sheets,第二行调用时写成了小写sheets grepl筛选行末尾缺少右括号)
方案1:生成dataset1、dataset2格式的独立变量
用assign()函数可以实现动态生成指定名称的环境变量,代码如下:
library(Rcpp) library(readxl) Sheets <- readxl::excel_sheets("~/data.xlsx") sheet_names <- Sheets[grepl("String", Sheets, ignore.case = TRUE)] for (i in seq_along(sheet_names)) { # 动态拼接变量名,赋值到当前环境 assign(paste0("dataset", i), read_excel("data.xlsx", sheet = sheet_names[i])) }
运行后就能直接在环境里调用dataset1、dataset2等对应数据集。
方案2:直接用工作表名作为数据集变量名
如果想要变量名和工作表名完全一致,调整assign的第一个参数即可:
for (i in seq_along(sheet_names)) { assign(sheet_names[i], read_excel("data.xlsx", sheet = sheet_names[i])) }
如果工作表名有空格、特殊字符,可以用get()函数调用,比如get("sheet 名称")。
更推荐的做法:用列表存储所有数据集
散落的独立变量后续批量处理会很麻烦,更建议把所有数据集存在一个命名列表里,调用更方便:
# 生成命名列表,名称为对应工作表名 dataset_list <- lapply(sheet_names, function(s) read_excel("data.xlsx", sheet = s)) names(dataset_list) <- sheet_names # 调用方式:按名称取 dataset_list[["工作表名"]],按序号取 dataset_list[[1]]
内容的提问来源于stack exchange,提问作者Anto Kiernan
相关产品推荐
相关产品推荐

