读取单独的文本文件并将其保存为单独的变量作为单独的数据帧

时间:2019-12-04 13:24:21

标签: r fread read.table

我有多个从同一软件生成的文本文件(制表符分隔)。最初,我使用带有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中访问特定的迭代?

2 个答案:

答案 0 :(得分:1)

我们可以使用setNames

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

答案 1 :(得分:0)

我们还可以创建一个通用功能,在导入文件时设置名称:

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]]

对其进行呼叫