【问题标题】:Save each element of a list to text file将列表的每个元素保存到文本文件
【发布时间】:2019-01-24 09:16:25
【问题描述】:

我有一个包含许多 csv 文件的文件夹。我是这样读的

files <-  list.files(pattern = "*.csv")
  [1] "ETo_1980.csv" "ETo_1981.csv" "ETo_1982.csv" "ETo_1983.csv" "ETo_1984.csv" "ETo_1985.csv"
  [7] "ETo_1986.csv" "ETo_1987.csv" "ETo_1988.csv" "ETo_1989.csv" "ETo_1990.csv" "ETo_1991.csv"
  [13] "ETo_1992.csv" "ETo_1993.csv" "ETo_1994.csv" "ETo_1995.csv" "ETo_1996.csv" "ETo_1997.csv"
  [19] "ETo_1998.csv" "ETo_1999.csv" "ETo_2000.csv" "ETo_2001.csv" "ETo_2002.csv" "ETo_2003.csv"
  [25] "ETo_2004.csv" "ETo_2005.csv" "ETo_2006.csv" "ETo_2007.csv" "ETo_2008.csv" "ETo_2009.csv"
  [31] "ETo_2010.csv" "ETo_2011.csv" "ETo_2012.csv" "ETo_2013.csv" "ETo_2014.csv" "ETo_2015.csv

现在我读了它们:

DT <- lapply(files, fread)

每个文件,我想保存为文本文件 (.txt)。如何将每个文件保存为同名的 .txt?

lapply(DT, function(x) { write.table()})?

【问题讨论】:

    标签: r csv text lapply write.table


    【解决方案1】:

    我生成了一个名为xlist,其中包含两个名为ab 的对象。在循环中使用paste0 自动命名文本文件,如下所示:a.txtb.txtwrite.table 执行文件的实际保存。

    x <- list(a=c(1,2), b=c(3,4))
    
    for(i in 1:length(x)){
      write.table(x[[i]], paste0(names(x)[i], ".txt"), col.names = F)
    }
    

    使用list.files 查看文件是否已保存在您的工作目录中。

    list.files()
    [1] "a.txt" "b.txt"
    

    【讨论】:

      【解决方案2】:

      尝试使用read.csv 读取CSV 文件,然后使用write.csv 写入它们:

      lapply(files, function(x) {
          df <- read.csv(file=x)
          name <- sub("\\.csv$", "\\.txt", x)
          write.csv(df, file=name)
      })
      

      【讨论】:

      • 谢谢。我正在尝试将其保存为文本文件。也许你的意思是 write.table?
      • 没有错。我的文件已经在 csv 中,我需要将它们保存为 .txt 并提供给其他人
      • 但是你也可以使用write.csv保存为.txt;正如这里建议的那样。例如,尝试:write.csv(NA, 'na.txt')。
      • @milan 感谢您的澄清。
      【解决方案3】:

      循环遍历索引并创建要保存为的文件名的向量:

      txt_files <- sub("csv$","txt",files)
      lapply(seq_along(DT), function(x) write.table(DT[[x]], txt_files[x]))
      

      请注意,您可能还想从输出中排除 row.names。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-11
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        相关资源
        最近更新 更多