【发布时间】:2020-10-14 13:13:09
【问题描述】:
我想从 Excel 文件中导入八张工作表并将它们保存为单独的对象。出于本文的目的,我们将调用 Excel 文件 Test.xlsx 和工作表 Q1、HH5、L9、P9、TOO4、GG1、JQ1、HJ0、BM6、VT8。请注意,所有工作表都有不同的命名约定。
我非常习惯 SAS,您可以在其中构建宏并动态更改变量以循环显示工作表名称。我应该如何在 R 中解决这个问题?
谢谢
【问题讨论】:
我想从 Excel 文件中导入八张工作表并将它们保存为单独的对象。出于本文的目的,我们将调用 Excel 文件 Test.xlsx 和工作表 Q1、HH5、L9、P9、TOO4、GG1、JQ1、HJ0、BM6、VT8。请注意,所有工作表都有不同的命名约定。
我非常习惯 SAS,您可以在其中构建宏并动态更改变量以循环显示工作表名称。我应该如何在 R 中解决这个问题?
谢谢
【问题讨论】:
这里每个工作表都保存为一个 data.frame(因此作为一个单独的对象):
sheet_names <-c("Q1", "HH5", "L9", "P9", "TOO4", "GG1", "JQ1", "HJ0", "BM6", "VT8")
for (i in 1:(length(sheet_names))) {
excel_sheet <- read_excel("Test.xlsx", sheet = paste0(sheet_names[i]))
assign(paste0(sheet_names[i]), excel_sheet)
rm(excel_sheet)
}
如果有帮助,请告诉我们。
【讨论】:
assign(paste0(sheet_names[i]), excel_sheet)
试试这个。
library("readxl")
library("openxlsx")
setwd("C:\\...")
filenames <- list.files()
data <- list()
for(i in 1:length(filenames)){
data[[i]] <- read.xlsx(filenames[i])
}
这应该可以解决您的问题。在文件名功能中,您可以使用 recursive = T 打开 te 目录中的文件夹和/或 pattern = ".xlsx" 以仅查找目录中的 .xlsx 文件。
【讨论】: