如何使用 R 读取文件夹中的所有文件并创建具有相同文件名的对象?

How to read all the files in a folder using R and create objects with the same file names?

我需要在 R 中创建一个函数来读取文件夹中的所有文件(假设所有文件都是制表符分隔格式的表格)并在全局环境中创建具有相同名称的对象。我做了类似的事情(见下面的代码);我能够编写一个函数来读取文件夹中的所有文件,在每个文件的第一列中进行一些更改并将其写回到文件夹中。但是我找不到如何将读取的文件分配给将保留在全局环境中的对象。

changeCol1 <- function () {
     filesInfolder <- list.files()
     for (i in 1:length(filesInfolder)){
         wrkngFile <- read.table(filesInfolder[i])
         wrkngFile[,1] <- gsub(0,1,wrkngFile[,1])
         write.table(wrkngFile, file = filesInfolder[i], quote = F, sep = "\t")
         }
     }

进行更改后将其添加到您的循环中:

assign(filesInfolder[i], wrkngFile, envir=globalenv())

如果您想将它们放入列表中,一种方法是在循环之外声明一个列表:

mylist = list()

然后,在你的循环中,这样做:

mylist[[filesInfolder[i] = wrkngFile]]

然后您可以通过查看访问每个对象:

mylist[[filename]]

来自全球环境

最好将它们全部分配给命名 list 的元素(这也很容易做到):

changeCol1 <- function () {
  filesInfolder <- list.files()
  lapply(filesInfolder, function(fname) {
    wrkngFile <- read.table(fname)
    wrkngFile[,1] <- gsub(0, 1, wrkngFile[,1])
    write.table(wrkngFile, file=fname, quote=FALSE, sep="\t")
    wrkngFile
  }) -> data
  names(data) <- filesInfolder
  data
}

a_list_full_of_data <- changeCol1()

此外,F 总有一天会回来困扰你(它在 FALSETRUE 所在的地方不受保护)。