首页 > 解决方案 > 有没有办法用在别处分配的名称的一部分来命名一个对象?工作室

问题描述

我是一个相对缺乏经验的编码器,使用 R 来尝试清理一些数据。在这样做时,我正在尝试编写对多个电子表格执行相同操作的代码,并创建名称与各自电子表格匹配的输出。我希望分配每个对象名称的一部分,这样我就可以复制和粘贴每个单独年份数据的代码,并且只需要更改一行代码。我在想的是我可以做类似的事情(我知道这行不通,我只是不知道类似或更好的事情是否可能)。谢谢!

XX<- 05 #the last two digits of the year data is gathered
sheetXX <- read_excel("file path for data2005")
sheetXX.1 <- rbind(sheetXX, c(as.character("Example row"), 10, 12))

希望对于我使用的所有命令,我最终会得到名为 sheet01.1、sheet02.1 等的最终产品,例如 2001 年和 2002 年。

标签: rdata-cleaning

解决方案


您可以遍历文件名向量以将它们读入 R,如下所示:

xl_sheets <- lapply(dir(pattern = "xlsx"), read_excel)

这会在工作目录中创建一个所有 XLSX 文件名的列表,dir()然后将它们一一输入到readxl::read_excel(). 结果是与工作目录中的 XLSX 文件对应的数据框列表。

要为它们提供与文件名相对应的名称,您可以执行以下操作:

names(xl_sheets) <- dir(pattern = "xlsx")

要同时操作所有数据帧,您可以lapply()再次使用:

lapply(xl_sheets, function(x) add_column(x, a = 1))

如果要对每个数据帧执行不同的操作,可以使用

xl_sheets[[1]]
xl_sheets[[2]]
...

或者

xl_sheets$file_name_a
xl_sheets$file_name_b
...

或者,您可以使用list2env()在您的环境中将每个数据帧作为单个对象获取。

list2env(xl_sheets, xl_sheets, envir = globalenv())

推荐阅读