【问题标题】:Add header and footer to data in write.table()在 write.table() 中为数据添加页眉和页脚
【发布时间】:2018-09-21 22:43:35
【问题描述】:

我有几百个数据文件,我需要在 r 中为每个文件添加一个标题(文件中数据的开头)和页脚(文件中数据的结尾),如下所示:

标题:

line1
line2
line3

同样,我有几行我喜欢在每个数据文件的末尾添加页脚

页脚:

line1
line2
line3

使用 write.table() 在 r 中写入表时。有人可以提出一个简单的解决方案吗?谢谢

【问题讨论】:

    标签: r csv header footer write.table


    【解决方案1】:

    大概是这样的:

    lapply( c('dobjt1', 'dobjct2', 'other3'),
      function(x) { 
        name <- paste0( x, ".txt")
        write(c(line1,line2,line3), file=name)
        out <- get(x); Need to use `get` when working with character values
        write.table(out, file=name, append=TRUE)
        write(c(line1,line2,line3), file=name, append=TRUE)
      })
    

    【讨论】:

    • 你能修复你的缩进和丢失的'}'吗,这真的很难阅读,并且不执行?
    • 我认为它更可能是缺少“)”,但如果您觉得不正确,请随时更正。
    • @42- 我有一个完整的工作示例的代码,它从磁盘读取文件列表并使用 lapply() 和 write() 处理它们,如上所述。我应该编辑您的答案以包含示例还是将其作为单独的答案发布?
    • 听起来它比编辑更重要。继续发帖吧。
    【解决方案2】:

    在@42- s 解决方案中添加步骤以从磁盘读取文件列表并将其文件名分配为数据框名称,从而获得完整、有效的解决方案。

    我们将使用来自 kaggle.com 的 Alex Barradas Pokémon Stats 数据集中的 Pokémon 数据作为示例。

    download.file("https://github.com/lgreski/PokemonData/raw/master/pokemonData.zip",
                  "pokemonData.zip",mode="wb",method="wininet")
    
    unzip("pokemonData.zip")
    
    thePokemonFiles <- list.files("./pokemonData",
                                  full.names=FALSE)[1:3] # subset to first 3 files
    
    pokemonData <- lapply(thePokemonFiles,function(x) {
      data <- read.csv(paste("./pokemonData/",x,sep=""))
      # set input file name as object name so file list can be used in lapply() for write
      assign(x,data,parent.env(environment()))
      NULL # null return to avoid duplicating data frames in output list
    })
    
    header <- c("header 1","header 2","header 3")
    footer <- c("footer 1","footer 2","footer 3")
    
    
    lapply(thePokemonFiles, function(x) {
      name <- paste0(x, ".txt")
      write(header, file = name)
      write.table(get(x), file = name, append = TRUE)
      write(footer, file = name, append = TRUE)
    })
    

    ...第一代神奇宝贝生成的文本文件的前几行是:

    【讨论】:

      猜你喜欢
      • 2022-06-11
      • 2010-12-03
      • 1970-01-01
      • 2014-08-17
      • 2013-09-05
      • 1970-01-01
      • 2013-09-30
      • 2013-05-07
      • 1970-01-01
      相关资源
      最近更新 更多