如何使用 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
总有一天会回来困扰你(它在 FALSE
和 TRUE
所在的地方不受保护)。
我需要在 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
总有一天会回来困扰你(它在 FALSE
和 TRUE
所在的地方不受保护)。