首页 > 解决方案 > 加入列表列表中的数据

问题描述

我正在使用 readxl 包从多个 excel 文件中导入数据,并在我的脚本中创建了一个函数,以便我只导入我需要的特定工作表

read_excel_sheets <- function(excelDoc) {
     sheets <- readxl::excel_sheets(excelDoc)
     sheets <- sheets[4:6]
     x <- lapply(sheets, function(X) readxl::read_excel(excelDoc, sheet = X))
     return(x)
}
#load files in folder
rawfiles <- list.files()
IMPORT <- lapply(rawfiles, FUN = read_excel_sheets)

将我文件夹中的文件加载到我的脚本中后,IMPORT 变成了一个列表 [10],其中包含列表 [3],基本上是列表中的列表。

不幸的是,我不能使用 reduce(full_join) 将我的数据收集到一个数据表中。我尝试只使用一个 excel 文件并使用 unlist() 来查看是否可以将我的工作表从列表列表中取出,但这没有用。

Test <- read_excel_sheets("Hop_L_Trial1.xlsx")
Test_Test <- unlist(Test)

我也试过

rawfiles <- list.files()
IMPORT <- lapply(rawfiles,
                FUN = read_excel_sheets) 
Test_3 <- rbindlist(IMPORT) 

并收到错误“第 1 项的第 1 列长度为 2,与长度为 6 的第 2 列不一致。仅回收长度为 1 的列。” 任何关于如何将我的数据加入一个数据表的建议将不胜感激,谢谢。

标签: rexceljoin

解决方案


对于这种data.table::rbindlist方法,只需设置fill=T

library(data.table)

dt_list = lapply(5:10, function(i) {
  data.table(rnorm(i))
})
dt=rbindlist(dt_list, fill=T) 

推荐阅读