在header.table()中向数据添加页眉和页脚

时间:2018-04-11 22:36:47

标签: r csv header footer write.table

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

部首:

line1
line2
line3

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

页脚:

line1
line2
line3

在r中用write.table()编写表。有人建议一个简单的解决方案?感谢

2 个答案:

答案 0 :(得分:0)

也许是这样的:

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)
  })

答案 1 :(得分:0)

向@ 42-s解决方案添加步骤以从磁盘读取文件列表并将其文件名指定为数据框名称,从而形成一个完整的,有效的解决方案。

我们将使用来自kaggle.com的AlexBarradasPokémonStats数据集中的神奇宝贝数据作为我们的示例。

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)
})

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

enter image description here