r - 有没有办法用在别处分配的名称的一部分来命名一个对象?工作室
问题描述
我是一个相对缺乏经验的编码器,使用 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 年。
解决方案
您可以遍历文件名向量以将它们读入 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())
推荐阅读
- wolfram-mathematica - 在 Mathematica 中进行代数替换的问题
- javascript - 如何在 discord.js 的不和谐语音频道中静音/取消静音?
- r - R 在行内的多个条件上使用 any()
- visual-studio-code - VSCode 中未使用变量的语义高亮显示
- css - 盖茨比、MaterialUI 制作中的 css 中断
- pytorch - PyTorch 中torch.embedding 的定义在哪里?
- laravel - 使用邮件陷阱向用户发送验证电子邮件后将用户重定向到登录页面
- android - onDataChange() 累积运行,每次数据更改都需要运行一次
- kubernetes - Kubernetes 是否等待就绪探测通过以在 DNS 中添加 POD 条目
- python - 如何在Python中使用索引获取dict中的键名和值