我试图理解如何在R中编写一个循环来重命名可变数量的数据帧 如果我运行此代码:
library("readxl")
path <- readxl_example("datasets.xls")
MyObject<-lapply(excel_sheets(path), read_excel, path = path)
我得到一个包含4个元组的对象。如果我想将它们重命名为File1 - File4,我可以使用
File1<-MyObject[[1]]
等等每个人分开。但是,我正在处理具有不同数量的工作表的文件,因此在我的对象中最终会有可变数量的数据帧。 所以我的问题是;我怎么告诉R将每个元素重命名为File1,File2等,因为对象中有很多元素?我会欢迎一个具体的答案,但是如果有一个教程可以讨论人们推荐的循环(对于初学者),我也欢迎这样。
答案 0 :(得分:2)
这样做你想要的吗?
基本R
循环就像for (i in start:end) {}
for (i in 1:length(MyObject)) {
assign(paste0("File", i), MyObject[[i]])
}
答案 1 :(得分:2)
知道你刚评论的内容,我可以建议一个恕我直言的解决方案:
由于您使用lapply
加载了Excel工作表,因此我认为MyObject
是单个data.frames
的列表。
因此,要将它们合并为一个data.frame
,只需运行alldfs <-
do.call(rbind,MyObject)
。
这应该只给你一个data.frame
没有任何循环或单个变量。