【问题标题】:How do I read multiple txt file and save them as respective object names? [duplicate]如何读取多个 txt 文件并将它们保存为各自的对象名称? [复制]
【发布时间】:2018-05-20 21:03:27
【问题描述】:

我有数百个.txt 文件。我想自动化一个过程来读取它们并用它们各自的文件名保存它们。例如,我想按此顺序保存它们而不键入单个文件的名称。

mytext1.txt <-read.table("./mytext1.txt", sep = "\t")
mytext2.txt <-read.table("./mytext2.txt", sep = "\t") 

这是我尝试过的代码,它当然不会将数据框保存在单独的对象名称中。

filelist = list.files(pattern = ".*.txt")   
datalist = lapply(filelist, FUN=read.table, header=TRUE, sep = "\t")

【问题讨论】:

  • 为什么不将datalist的条目命名为filelistnames(datalist) &lt;- filelist.
  • 这个问题已经被问过好几次了,但是被骗的目标不好,因为被骗问题的OP已经声明他只有8个文件,不同的文件结构.

标签: r


【解决方案1】:

你好像少了一行:

datafr = do.call("rbind", datalist)

请参阅此帖子以供参考:How do you read in multiple .txt files into R?

【讨论】:

  • 谢谢,但我希望它们位于一个单独的数据框中,并带有各自的文件名。
  • 我的错误。相反,请参阅此帖子:stackoverflow.com/questions/5319839/…。看起来 assign 函数就是您要找的。​​span>
  • @stevebroll 链接问题中的 OP 声明他只有 8 个不同文件结构的文件。如果有大量具有相同结构的文件,最好将它们存储在列表中或rbindlist() 它们,恕我直言。
【解决方案2】:

这可能不是最好的方法,但它应该做你想做的:

read.and.write.table <- function(files){
    for(fn in files){
        input <- read.table(file = fn, header = TRUE, sep = "\t")
        assign(x = fn, value = input, envir = .GlobalEnv)
    }
}

filelist = list.files(pattern = ".*.txt")  
read.and.write.table(filelist)

将创建以您的 .txt 文件命名的单独全局变量。当然,您可以包含一些字符串操作来美化名称。

【讨论】:

  • fortunes::fortune(236): 唯一应该使用assign函数的人是那些完全理解为什么永远不应该使用assign函数的人。 -- Greg Snow R-help(2009 年 7 月)
猜你喜欢
  • 1970-01-01
  • 2022-11-26
  • 2021-04-04
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多