我试图只读取合并到 data.frame 个列表中的多个 .xlsx 文件的尾部

I am trying to read only the tail of multiple .xlsx files merged into a data.frame of lists

我正在尝试将多个 .xlsx sheet 合并到 r 中的一个数据文件中,但只提取每个 sheet 的最后一行。

我是一名临床学者,我们目前有一个通过启用宏的 excel 传播 sheet 实现的预测算法。此启用宏的传播sheet 将 .xlsx sheet 输出到预先指定的文件夹中。

不幸的是,它在输出 .xlsx 中插入了一系列测试行。此外,用户有时会多次输入相同的数据,直到输入正确为止。出于这个原因,在清理后的数据中,我们只希望包含每个 .xlsx 文件的最后一行。

我已经成功地合并了所有文件,使用下面的代码,主要是由于 help/code 我已经设法从这个社区找到。

不幸的是,我遇到了以下错误消息。见下文

library(plyr)
library(dplyr)
library(readxl)

#file directory where the .xlsx files are to be listed below path <- "//c:/documents" 
filenames_list <- list.files(path= path, full.names=TRUE)

All_list <- lapply (filenames_list, 
               function(filename){
  print(paste("Merging",filename,sep = " "))
  read.xlsx(filename)
})

#this below code doesnt work 
#it returns the following error
# Error in x[seq.int(to = xlen, length.out = n)] : 
#  object of type 'S4' is not subsettable 
tail_only_list_df <- lapply (All_list,  
    function(newtail){
       tail(newtail, 1)
    })

final_df <- rbind.fill(tail_only_list_df)

尝试执行以下操作:

df <- do.call(rbind, lapply(filenames_list, function(filename) 
                tail(openxlsx::read.xlsx(filename), 1)))

或者如果您已经有 excel 个文件列表,则执行

df <- do.call(rbind, lapply(All_list, tail, 1))