我是 R 的新手,如果这是一个非常基本的问题,我深表歉意。
我尝试使用 list.files(pattern) 方法读取两个 Excel 文件,然后使用 for 循环绑定(bind)文件并替换绑定(bind)文件中的值。但是,我的脚本生成的输出只是一个文件的输出,这意味着它没有绑定(bind)。
文件名为 fact_import_2020
和 fact_import_20182019
。
FilePath <- "//srdceld2/project2/"
FileNames <- list.files(path = FilePath, pattern = "fact_import_20", all.files = FALSE,
full.names = FALSE, recursive = FALSE,
ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE)
FileCount <- length(FileNames)
for(i in 1:FileCount){
MOH_TotalHC_1 <- read_excel(paste(FilePath, "/", FileNames[i], sep = ""), sheet = 1, range = cell_cols("A:I"))
MOH_TotalHC_2 <- read_excel(paste(FilePath, "/", FileNames[i], sep = ""), sheet = 1, range = cell_cols("A:I"))
MOH_TotalHC <- rbind(MOH_TotalHC_1, MOH_TotalHC_2)
MOH_TotalHC <- MOH_TotalHC[complete.cases(MOH_TotalHC), ]
最佳答案
在 list.files()
中使用 full.names = TRUE
。
在此之后,确保 FileNames
具有文件的完整路径。
然后遍历文件名,而不是文件数。
我认为,您正在尝试这样做。我在这里猜测。请看下面。
您正在从一个文件中获取数据,因为您正在用文件 1 中的数据覆盖文件 2 中的数据。 for()
循环表明了这一点。
FileNames <- list.files(path = FilePath, pattern = "fact_import_20", all.files = FALSE,
full.names = TRUE, recursive = FALSE,
ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE)
# list of data from excell files
df_lst <- lapply(FileNames, function(fn){
read_excel(fn, sheet = 1, range = cell_cols("A:I"))
})
# combine both data
MOH_TotalHC <- do.call('rbind', df_lst)
# complete cases
MOH_TotalHC[complete.cases(MOH_TotalHC), ]
关于r - R中的for循环不绑定(bind)文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61068898/