r - 在列表的列表中连接数据

标签 r excel join

我使用 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 的列。”任何有关如何将我的数据加入到一个数据表中的建议将不胜感激,谢谢。

最佳答案

您可以使用 purrr 中的 map_df 将数据作为单个数据帧获取。

read_excel_sheets <- function(excelDoc) {
  sheets <- readxl::excel_sheets(excelDoc)
  sheets <- sheets[4:6]
  x <- purrr::map_df(sheets, function(X) readxl::read_excel(excelDoc, sheet = X))
  return(x)
}

IMPORT <- purrr::map_df(rawfiles, FUN = read_excel_sheets)

您还可以使用 do.call + rbind 基本 R 函数。

read_excel_sheets <- function(excelDoc) {
  sheets <- readxl::excel_sheets(excelDoc)
  sheets <- sheets[4:6]
  x <- do.call(rbind, lapply(sheets, function(X) readxl::read_excel(excelDoc, sheet = X)))
  return(x)
}

IMPORT <- do.call(rbind, lapply(rawfiles, FUN = read_excel_sheets))

关于r - 在列表的列表中连接数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62482411/

相关文章:

r - 已知 mu 和 cov 矩阵的 R 投资组合优化

sql-server - Excel vba xml解析性能

SQL 查询 JOIN 一个表(单独的 ID 和 Titles 表)

mysql - SELECT * FROM mytable INNER JOIN 等好,但是 SELECT * FROM mytable WHERE... INNER JOIN 错误

java - Apache poi 文件已损坏

join - Flask-SQLAlchemy 查询连接关系表

引用带有 bookdown 的数字

r - 从配置单元执行 R 脚本

r - 使用scale_size_area,从顶部和底部添加线条到下一个区域点

python - 在 Excel 中使用 IF、AND 和 OR 语句不重复代码