从R中的单个对象重命名可变数量的数据帧

时间:2017-06-13 13:55:21

标签: r readxl

我试图理解如何在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等,因为对象中有很多元素?我会欢迎一个具体的答案,但是如果有一个教程可以讨论人们推荐的循环(对于初学者),我也欢迎这样。

2 个答案:

答案 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没有任何循环或单个变量。