将标题添加到由“创建”创建的文件中;write.csv“;
我正在尝试自动化一些数据导出,我想为每个文件添加一个标题,如“请引用Bob和Jane 2008”。。。甚至是几行特定的指令,具体取决于上下文 我已经查看了write.csv和write.table文档,但没有看到任何此类功能将标题添加到由“创建”创建的文件中;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_
最简单的方法是什么 这里有两种可能的方法-使用连接编辑下的解决方案更灵活有效
使用
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,...)
}