读取单独的文本文件并将它们作为单独的数据帧保存在单个变量中
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]]
调用它们
我有多个文本文件(以制表符分隔)由同一个软件生成。我最初使用带有 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]]