将具有矢量输出的函数应用于数据帧列表

Apply a function with a vector output to a list of dataframes

我的目录中有一个具有特定模式的数据帧列表。显示了数据框的几行示例:

> head(data[,1:3])
# A tibble: 6 x 3
  ...1   ...2  ...3
  <chr> <dbl> <dbl>
1 PLZ       1     0
2 PLZ       1     0
3 PLZ       2    11
4 PLZ       2    11
5 PLZ       3    11
6 PLZ       3    11

我想编写一个函数来创建一个包含两列的数据框,一个是列表中每个数据框的名称,另一个是列表中每个数据框的 tail(data[,3], n = 1)

我尝试以下操作,首先尝试获取数据帧第三列的最后一行:

span_function <- function(baselines) {
data <- readxl::read_excel(allfiles, sheet = "Bridge Object Girder Forces", 
                       skip = 3, col_names = FALSE)

c(max(data[,3]))
}

baselines <- list.files(pattern = "\d+-\d+-S00", full.names = TRUE)
Spans <-  data.frame(t(sapply(baselines, span_function)))

我收到错误:

Error: `path` must be a string

尝试以下功能:

span_function <- function(filename) {
  data <- readxl::read_excel(filename, 
            sheet = "Bridge Object Girder Forces", skip = 3, col_names = FALSE)
  data.frame(filename = basename(filename), value = max(data[[3]]))
}
#Assuming the regex is correct to get the files that we want.
baselines <- list.files(pattern = "\d+-\d+-S00", full.names = TRUE)
Spans <-  do.call(rbind, lapply(baselines, span_function))