将标题添加到由“创建”创建的文件中;write.csv“;

将标题添加到由“创建”创建的文件中;write.csv“;,r,header,R,Header,我正在尝试自动化一些数据导出,我想为每个文件添加一个标题,如“请引用Bob和Jane 2008”。。。甚至是几行特定的指令,具体取决于上下文 我已经查看了write.csv和write.table文档,但没有看到任何此类功能 最简单的方法是什么 这里有两种可能的方法-使用连接编辑下的解决方案更灵活有效 使用write.table(…,append=T)和cat 在对write.table的调用中使用append=T,前面有cat标题 包裹在它自己的功能中 write.table_with_

我正在尝试自动化一些数据导出,我想为每个文件添加一个标题,如“请引用Bob和Jane 2008”。。。甚至是几行特定的指令,具体取决于上下文

我已经查看了write.csv和write.table文档,但没有看到任何此类功能


最简单的方法是什么

这里有两种可能的方法-使用连接编辑下的解决方案更灵活有效


使用
write.table(…,append=T)
cat
  • 在对
    write.table
    的调用中使用
    append=T
    ,前面有
    cat
    标题
包裹在它自己的功能中

write.table_with_header <- function(x, file, header, ...){
  cat(header, '\n',  file = file)
  write.table(x, file, append = T, ...)
}
请注意,此版本允许您使用
write.csv
write.table
或任何函数,并使用 (正如@flodel在评论中指出的那样)
将只打开和关闭文件一次,并自动追加。因此它更有效

您可以使用
writeLines
添加标题,并使用
write.csv
选项
append=TRUE
写入数据。
append
被忽略,并自动设置为
F
对于
write.csv
,请使用
write.table,sep=',“<代码> >。考虑使用<代码>文件< /代码>和<代码>关闭<代码>来打开和关闭文件连接。否则,您将打开和关闭文件两次,这有点低效。打开连接时,您总是在追加,因此不需要
append=TRUE
,您可以使用
write.csv
。要使此功能完全灵活,可以添加一行,使其即使没有标题也能工作。类似于
if(!missing(header))writelines(header,con=datafile)
。然后您可以将其命名为“mywrite”:-)而不是“write.with.header.maybe”第二个函数(my.write)按原样为我工作。第一个函数(write.table_和_头)需要“rownames=F”;考虑把“编辑”移到顶部,以防有人像我一样懒,不向下滚动。
my.write <- function(x, file, header, f = write.csv, ...){
# create and open the file connection
  datafile <- file(file, open = 'wt')
# close on exit
  on.exit(close(datafile))
# if a header is defined, write it to the file (@CarlWitthoft's suggestion)
  if(!missing(header)) writeLines(header,con=datafile)
# write the file using the defined function and required addition arguments  
  f(x, datafile,...)
}