2017-08-29 43 views
0

システムの既存のcsvファイルに新しい行を追加したいとします。以下はMWEです。まず、データテーブルを作成し、ファイルに書き込む:今すぐ逆の動作を実行し、既存のファイルから読み込まれ、変数を変更し、既存のファイルに変更されたDataTableを追加しよう既存のcsvファイルに新しい行を追加する

date <- "2017-08-01" 
investPercent<- 20 
expenses <- 20000 
savings <- 30000 
low <- 10 
high <- 20 
objective <-19000 


data<-data.frame(date, investPercent, expenses, savings, low, high, objective) 

write.csv(data, file="./finances.csv", row.names = F) 

data<-read.csv("./finances.csv",stringsAsFactors = FALSE) 

date <- Sys.Date() 
investPercent<- 99 
expenses <- 29999 
savings <- 39999 
low <- 19 
high <- 29 
objective <-19999 

dataplus<- data.frame(date, investPercent, expenses, savings, low, high, objective) 
write.csv(dataplus, file="./finances.csv", append = T) 

これは機能しません。finances.csvファイルは完全に書き直され、appendオプションはファイルが文字列の場合にのみ動作するように見えます。

  • 既存のcsvファイルに同じサイズのデータ​​テーブルを追加するにはどうすればよいですか?
+1

実際にここからファイルを読み取ったものは、実際には変更していないことに注意してください。代わりに、コードは新しいデータフレームを再構築し、ファイルに追加します。 CSVファイルの既存の行を変更しない限り、データを読み込む必要はありません。新しい行を追加するために、それを順番に追加し続けることができます。 – bmosov01

答えて

1

write.csv()を使用して追加することはできません。代わりにwrite.table()を使用し、いくつかの追加パラメータを指定する必要があります。次の例では、csvファイルに新しい行のデータを追加し、appendの列見出しは省略します。つまり、最初にテーブルを書き込むときに列ヘッダーを含めるだけで済みます。その後、データは同じヘッダーの下に流れなければなりません。

write.table(dataplus, 
      file="./finances.csv", 
      append = T, 
      sep=',', 
      row.names=F, 
      col.names=F)