Lapply 跨指定 excel 个工作表的函数

Lapply function across specified excel sheets

我有多个 excel 文件,其中有多个 sheet。我需要从每个 sheet 中提取某些数据并将所有数据组合在一起。对于一个 sheet,我执行以下操作:

supdata = read_excel("Data/Exercise/IDNo-03.xlsx", sheet="Supervised", skip = 2)
ID =  read_excel("Data/Exercise/IDNo-03.xlsx", sheet="Measurements",  col_names = FALSE)

id =  as.character( ID[1,1])%>%
  str_replace("Participant ", "")
mass = as.numeric(ID[3,5])
supdata = supdata%>%
    mutate(ID = id, Mass = mass) 

这行得通。我需要对所有文件执行此操作。

我试过这个:

dir_path <- "Data/Exercise/"
list = list.files(path = dir_path, "*.xlsx")

all = lapply(list, function(x){
  supdata = read_excel(x, sheet="Supervised", skip = 2)
  ID =  read_excel(x, sheet="Measurements",  col_names = FALSE)
  
  id =  as.character( ID[1,1])%>%
    str_replace("Participant ", "")
  mass = as.numeric(ID[3,5])
  
  supdata = supdata%>%
    mutate(ID = id, Mass = mass) 
  
  })

list 识别指定路径下的相关文件,但报错:

Error: `path` does not exist: ‘IDNo-03.xlsx’ 

我做错了什么?还有另一种方法可以解决这个问题吗? 如果我能让这部分工作,我会做:

dat = do.call("rbind.data.frame", all)

list.files 没有指定 full.names return 只有文件名没有完整路径

list.files(file.path(getwd(), "Downloads"), pattern ="\.csv")
#[1] "testing.csv"  

如果我们指定full.names

list.files(file.path(getwd(), "Downloads"), pattern ="\.csv", full.names = TRUE)  
#[1]"/Users/akrun/Downloads/testing.csv"       

当我们在没有路径的情况下遍历这些文件时,它会在工作目录中查找文件并因此给出错误