读取单独的文本文件并将它们作为单独的数据帧保存在单个变量中

Reading seperate text files and saving them in a single variable as seperate dataframes

我有多个文本文件(以制表符分隔)由同一个软件生成。我最初使用带有 assign 函数的循环来动态创建变量并使用 read.table 函数单独存储它们。这导致变量太多,并且在单独的文件上应用操作显然很耗时。

我遇到了下面代码中显示的 lapply 和 fread 方法。

我不需要合并它们,它们需要是单独的数据框,这样我才能比较文件中的值。使用 lapply 函数,这是可能的,但文件名不会以任何方式保留。我从 How to import multiple .csv files at once? 中找到了以下代码,对我有帮助。它有多行,我想知道是否有一个单行解决方案。

foo <- function(fname){
  fread(fname, skip = 5, header = TRUE, sep = " ") %>% 
   mutate(fn = fname)
}

all <- lapply(files, FUN = foo)

或者,我如何访问 lapply 中的特定迭代?

我们可以使用setNames

all <- setNames(lapply(files, foo), files)

我们还可以制作一个通用函数,在导入文件时设置名称:

import_with_names <- function(files){

    loaded <- list()
    for (fname in files){
        loaded[[fname]] <- fread(fname, skip = 5, header = TRUE, sep = " ")
    }
    return(loaded)
}

all <- import_with_names(files)

然后您可以使用 all[[file_name]]

调用它们