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"
当我们在没有路径的情况下遍历这些文件时,它会在工作目录中查找文件并因此给出错误
我有多个 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"
当我们在没有路径的情况下遍历这些文件时,它会在工作目录中查找文件并因此给出错误