【问题标题】:Apply a function with a vector output to a list of dataframes将具有矢量输出的函数应用于数据帧列表
【发布时间】:2020-09-28 00:59:53
【问题描述】:

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

> 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

【问题讨论】:

    标签: r function dataframe apply


    【解决方案1】:

    试试下面的功能:

    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))
    

    【讨论】:

      猜你喜欢
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      相关资源
      最近更新 更多