【发布时间】:2021-12-22 12:00:46
【问题描述】:
我有 10 个 Excel 文件要读入 R,它们的名称如下:
- 数据 - 2021 年 1 月.xlsx
- 数据 - 2021 年 2 月.xlsx
- 数据 - 2021 年 3 月.xlsx
- 数据 - 2021 年 4 月.xlsx
- 数据 - 2021 年 5 月.xlsx
- 数据 - 2021 年 6 月.xlsx
- 数据 - 2021 年 7 月.xlsx
- 数据 - 2021 年 8 月.xlsx
- 数据 - 2021 年 9 月.xlsx
- 数据 - 2021 年 10 月.xlsx
我可以编写 10 次 R 代码,每月一次,如下:
data_January_2021 <- read.xlsx("Data - January 2021.xlsx")
data_February_2021 <- read.xlsx("Data - February 2021.xlsx")
data_March_2021 <- read.xlsx("Data - March 2021.xlsx")
data_April_2021 <- read.xlsx("Data - April 2021.xlsx")
data_May_2021 <- read.xlsx("Data - May 2021.xlsx")
data_June_2021 <- read.xlsx("Data - June 2021.xlsx")
data_July_2021 <- read.xlsx("Data - July 2021.xlsx")
data_August_2021 <- read.xlsx("Data - August 2021.xlsx")
data_September_2021 <- read.xlsx("Data - September 2021.xlsx")
data_October_2021 <- read.xlsx("Data - October 2021.xlsx")
但是,由于文件名仅按月份不同,所以我决定编写一个for循环来简化处理,如下所示。
months <- c("January", "February", "March", "April", "May", "June", "July", "August", "September", "October")
for (i in 1:length(months)) {
data_[i]_2021 <- read.xlsx(paste0("Data - ", months[i], " 2021.xlsx"))
}
同样,这个 for 循环的目标是在 R 环境中创建以下数据框:
data_January_2021
data_February_2021
data_March_2021
data_April_2021
data_May_2021
data_June_2021
data_July_2021
data_August_2021
data_September_2021
data_October_2021
但是,当我运行它时,我收到以下错误:
Error: object 'data_' not found
我将如何修复 for 循环来做到这一点?
【问题讨论】:
-
在开始分配对象之前,您还没有创建对象
data。不要使用data作为对象的名称,因为它是函数的名称。 R 通常会正确处理,但是当事情不明确时(使用不存在的对象名称),错误消息可能不会像其他情况那样清晰。 -
data_[i]_2021毫无意义。方括号用于索引。在这里,您尝试使用它们根据i的内容命名对象。如果您确定需要使用这些名称创建这些数据框,您可以使用assign()函数(基本包)并调用paste0()作为x 参数。您也可以考虑将所有内容放在一个数据框或列表中。 -
@dcarlson 我使用
data作为假设。所以在 for 循环中的第一条语句之前,像data_[i]_2021