首页 > 解决方案 > rbind.fill 基于通用模式 R

问题描述

我在 R 中有很多以以下格式编写的文本文件:

building_000000.txt
building_window_roof_000123.txt
building_window_roof_000126.txt
...

我使用此命令列出的

files_list <- list.files(pattern="txt")

我想要做的是使用 mget(ls) 将具有此模式“building_roof_window_\\\\\d+”的所有文件(数据帧)绑定到单个 .txt 文件中。我还想使用“rbind.fill”,因为并非所有数据帧都具有相同的列数。所以这就是我试图做的:

building_roof_window <- do.call("rbind.fill", mget(ls(pattern="^building[_]roof[_]window[_]\\\\\\d+")))

但结果是一个空的数据框。我错过了什么?可能是由于对正则表达式的草率使用吗?

标签: r

解决方案


主要任务是使用正确的正则表达式选择文件名。我们可以使用如下的正则表达式:

files_list  <- list.files(pattern= 'building_roof_window_\\d+.*\\.txt$')
building_roof_window <- do.call(plyr::rbind.fill, mget(files_list))

推荐阅读