繁体   English   中英

将页眉和页脚添加到write.table()中的数据

[英]Add header and footer to data in write.table()

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

标头:

line1
line2
line3

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

页脚:

line1
line2
line3

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

也许是这样的:

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解决方案中添加步骤以从磁盘读取文件列表,并为它们指定文件名作为数据帧名称,这将导致一个完整,有效的解决方案。

我们将使用来自kaggle.com的Alex Barradas的“Poké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)
})

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

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM