R 将多个xl文件读入数据帧

R 将多个xl文件读入数据帧,r,excel,xlconnect,R,Excel,Xlconnect,我一直在使用XLConnect函数loadworkbook将每个xlsx文件加载到R中,然后rbind将它们合并在一起。这样做的最好方法是什么,而不是编写多个df来稍后合并它们。我正在尝试使用下面的代码将我的excel文件合并到大多数文件的两个dataframes2工作表名称中。列始终相同,但文件名将更改 当前/慢速方式 新代码 requirereadxl 文件列表这种方法怎么样 library(purrr) library(readxl) # filenames to xl-sheets fi

我一直在使用XLConnect函数loadworkbook将每个xlsx文件加载到R中,然后rbind将它们合并在一起。这样做的最好方法是什么,而不是编写多个df来稍后合并它们。我正在尝试使用下面的代码将我的excel文件合并到大多数文件的两个dataframes2工作表名称中。列始终相同,但文件名将更改

当前/慢速方式

新代码

requirereadxl
文件列表这种方法怎么样

library(purrr)
library(readxl)
# filenames to xl-sheets
files <- sprintf("Mappe%i.xlsx", 1:3)

# read only df for xl-files with school-sheet
xl_school <- map_if(files, ~ "School" %in% excel_sheets(.x), ~read_excel(.x))
# read only df for xl-files with college-sheet
xl_college <- map_if(files, ~ "College" %in% excel_sheets(.x), ~read_excel(.x))

# combine school-files to data frame (repeat same for college)
school_df <- map_df(xl_school, function(x) if(is.data.frame(x)) x)

school_df
#> # A tibble: 3 × 1
#>      Test
#>     <chr>
#> 1    fdsf
#> 2  543534
#> 3 gfdgfdd

您应该通读软件包中的可用函数,看看是否有一个函数将工作表的名称作为向量提供。如果是,则可以检查是否存在纸张。例如openxlsx软件包有一个函数getSheetNames用于此目的。sheetnames始终是相同的学校和学院,但不是每个文件都有这两个名称,这就是为什么我不知道如何将它们合并在一起。我需要一个数据框,它将合并每个文件的名为School的每个sheetname,并对大学执行相同的操作,但我不知道最好的合并方法是什么这样做。谢谢,你可以试着抓住这张表,如果它失败了,抓住一个错误,然后优雅地继续。你可以用tryCatch来做。很高兴我能帮上忙。但是咕噜?软件包是names,CRAN/R区分大小写。这项功能现在可以使用了,但在我的大学工作表上返回了相同的结果,我刚刚在一些旧数据上测试了这项功能,我得到了以下错误,需要数字:它与文本列相关。因此,有时,例如,在某些列中,可能只包含数字值,有时发短信?如果是这样,你可以在打电话给map_df之前转换为字符:xl_学校谢谢你的帮助,我无法在map_df之前转换为字符,因为我从map_If得到错误。使用你的第二个选项是,如果我尝试xl_学校,我目前拥有xl_学校
library(purrr)
library(readxl)
# filenames to xl-sheets
files <- sprintf("Mappe%i.xlsx", 1:3)

# read only df for xl-files with school-sheet
xl_school <- map_if(files, ~ "School" %in% excel_sheets(.x), ~read_excel(.x))
# read only df for xl-files with college-sheet
xl_college <- map_if(files, ~ "College" %in% excel_sheets(.x), ~read_excel(.x))

# combine school-files to data frame (repeat same for college)
school_df <- map_df(xl_school, function(x) if(is.data.frame(x)) x)

school_df
#> # A tibble: 3 × 1
#>      Test
#>     <chr>
#> 1    fdsf
#> 2  543534
#> 3 gfdgfdd
# read only df for xl-files with school-sheet
xl_school <- map_if(files, ~ "School" %in% excel_sheets(.x), ~read_excel(.x, col_types = "text"))
# read only df for xl-files with college-sheet
xl_college <- map_if(files, ~ "College" %in% excel_sheets(.x), ~read_excel(.x, col_types = "text"))