R 组合具有相似名称的CSV文件

R 组合具有相似名称的CSV文件,r,R,我有一个包含数千个CSV文件的目录,幸运的是,它遵循严格的命名约定。我试图编写一个函数,将以相同的最后7位结尾的所有文件分组到单独的数据帧中 我有一个7位模式的向量(u)要匹配: v <- list.files(wd, full.names = FALSE) u <- unique(substr(v, 9, 15)) v对lappy的嵌套调用应该可以做到这一点。对lappy的第一个调用循环遍历唯一的模式(v)。对于每个模式,第二个lappy循环遍历所有匹配的文件(list.file

我有一个包含数千个CSV文件的目录,幸运的是,它遵循严格的命名约定。我试图编写一个函数,将以相同的最后7位结尾的所有文件分组到单独的数据帧中

我有一个7位模式的向量(u)要匹配:

v <- list.files(wd, full.names = FALSE)
u <- unique(substr(v, 9, 15))

v对
lappy
的嵌套调用应该可以做到这一点。对
lappy
的第一个调用循环遍历唯一的模式(
v
)。对于每个模式,第二个
lappy
循环遍历所有匹配的文件(
list.files(pattern=pattern)
),读取(
read.table
)中的文件,然后使用
dplyr
包中的
bind_rows
将它们绑定到一个单独的data.frame中(您也可以使用
rbind
,但我发现
bind\u rows
更简单)并将其返回到外部
lappy

结果应该是
数据.frames
列表
,其中每个都包含与7位模式匹配的所有
.csv
文件的合并内容

list_of_file_sets <- lapply(v, function(pattern) {
    file_set <- lapply(list.files(pattern=pattern), function(file) {
        read.table(file, sep=',', header=T, stringsAsFactors=F)
    })
    file_set <- dplyr::bind_rows(file_set)
})
names(list_of_file_sets) <- v # Optionally set names of list to 7 digit pattern

list\u of theu file\u设置对
lappy
的嵌套调用。对
lappy
的第一个调用循环遍历唯一的模式(
v
)。对于每个模式,第二个
lappy
循环遍历所有匹配的文件(
list.files(pattern=pattern)
),在(
read.table
)中读取文件然后使用
dplyr
包中的
bind_行
将它们绑定到一个单独的data.frame中(您也可以使用
rbind
,但我发现
bind_行
更简单),并将其返回到外部
lappy

结果应该是
数据.frames
列表
,其中每个都包含与7位模式匹配的所有
.csv
文件的合并内容

list_of_file_sets <- lapply(v, function(pattern) {
    file_set <- lapply(list.files(pattern=pattern), function(file) {
        read.table(file, sep=',', header=T, stringsAsFactors=F)
    })
    file_set <- dplyr::bind_rows(file_set)
})
names(list_of_file_sets) <- v # Optionally set names of list to 7 digit pattern

list\U of_file\U set非常感谢您的回复,divibisan!您的描述听起来和我想做的完全一样,但我还没能做到。我的唯一模式向量是U,文件向量是V。另外,我得到了一个“意外的}”文件集附近出现错误。有什么想法吗?哦,缺少一个右括号。请再次尝试关闭!当前错误是“无法分配大小为122 Kb的向量”,我将看看是否可以解决此问题。请查看。这很奇怪,因为此错误通常发生在大型对象上(数百Mb到Gb)这会填满计算机的内存。您可能只想重新启动计算机,看看是否有帮助,只有几Gb。我可以精简一半的文件,然后再试一次。如果不行,我将分批进行。我将报告并相应地标记您的答案。非常感谢您的帮助!非常感谢您的回复,divibisan!您的d描述听起来和我想做的完全一样,但我还没能让它工作。我的唯一模式向量是U,文件向量是V。此外,我在文件集附近遇到了一个“意外的}”错误。有什么想法吗?哦,缺少一个右括号。再次尝试关闭!当前错误是“无法分配大小为122 Kb的向量,”我会看看是否能解决这个问题。看看。这很奇怪,因为这种错误通常发生在大型对象上(数百Mb到Gb)这会填满计算机的内存。您可能只想重新启动计算机,看看这是否有帮助,只有几Gb。我可以精简一半的文件,然后重试。如果不起作用,我将分批进行。我将相应地报告并标记您的答案。非常感谢您的帮助!