将具有矢量输出的函数应用于数据帧列表
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))
我的目录中有一个具有特定模式的数据帧列表。显示了数据框的几行示例:
> 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))