7

一部のデータエクスポートを自動化しようとしています。各ファイルに「BobandJane2008を引用してください」などのヘッダーを追加したり、コンテキストに応じて特定の指示を数行追加したりします。

write.csvとwrite.tableのドキュメントを見ましたが、そのような機能はありません。

これを達成する最も簡単な方法は何ですか?

4

1 に答える 1

17

考えられるアプローチは2つあります。接続を使用したEDITのソリューションは、より柔軟で効率的です。


write.table(...,append = T) およびの 使用cat

  • append=Tへの呼び出し内で使用し、以前にヘッダーをそこwrite.tableに持っているcat

独自の機能に包まれて…。

write.table_with_header <- function(x, file, header, ...){
  cat(header, '\n',  file = file)
  write.table(x, file, append = T, ...)
}

append呼び出しでは無視されるwrite.csvため、単に呼び出す必要があることに注意してください

write.table_with_header(x,file,header,sep=',')

その結果、csvファイルが作成されます。


編集

接続を使用する

(提案がこれである@flodelに感謝します)

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

このバージョンでは、write.csvまたはwrite.tableまたは任意の関数を使用でき、ファイル接続を使用します。ファイル接続は(@flodelがコメントで指摘しているように)ファイルを一度だけ開いたり閉じたりして、自動的に追加します。したがって、より効率的です!

于 2012-09-12T04:31:02.123 に答える