多个 bind_rows 与 R Dplyr

Multiple bind_rows with R Dplyr

我需要 bind_row 27 excel 个文件。虽然我可以手动完成,但我想用循环来完成。循环的问题是它将第一个文件绑定到 i,然后第一个文件绑定到 i+1,因此丢失 i。我该如何解决这个问题?

nm <- list.files(path="sample/sample/sample/")

df <- data.frame()

for(i in 1:27){
  my_data <- bind_rows(df, read_excel(path = nm[i]))
}

我们可以用 map 遍历文件,用 read_excel 读取数据,用 _dfr

rbind
library(purrr)
my_data <- map_dfr(nm, read_excel)

在 Op 的代码中,问题是在每次迭代中,它都会创建一个临时数据集 'my_data',相反,它应该绑定到已经创建的原始 'df'

for(i in 1:27){
  df <- rbind(df, read_excel(path = nm[i]))
}

我们可以使用 sapply

result <- sapply(files, read_excel, simplify=FALSE) %>% 
    bind_rows(.id = "id")

您仍然可以使用 for 循环:

my_data<-vector('list', 27)
for(i in 1:27){
  my_data[i] <- read_excel(path = nm[i])
}
do.call(rbind, my_data)