r - R中的for循环不绑定(bind)文件

标签 r for-loop

我是 R 的新手,如果这是一个非常基本的问题,我深表歉意。

我尝试使用 list.files(pattern) 方法读取两个 Excel 文件,然后使用 for 循环绑定(bind)文件并替换绑定(bind)文件中的值。但是,我的脚本生成的输出只是一个文件的输出,这意味着它没有绑定(bind)。

文件名为 fact_import_2020fact_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/

相关文章:

R、knitr、xtable,同时使用 add.to.row 和 hline.after

java - 迭代总和

java - 如何从 LinkedHashSet 中获取前 5 个值?

c++ - 使用 string erase() 和 string length() 从字符串中删除某些字符

python - 找到一个函数来查找列表中相邻值之间的差异,然后针对阈值进行测试

替换数据框中每列的每个字符串的前两个字符

r - ggplot : why does coord_cartesian(xlim . ..)不适用于scale_x_date?

mysql - 在 MySQL 表中替换 R 中的特殊字符

ios - Swift 中的以下 for 循环语法有什么问题?

r - 组合取消分类因子变量