7

write.table、write.lines、sink など、既存のデータ ファイル (.csv または .txt) にテキストを追加できるいくつかの関数を見てきました。

append 引数 =TRUE の場合、新しいデータは常にファイルの既存の最後の行の後に追加されます。既存のファイルの最初の行 (ヘッダーの下) にデータを追加することは可能ですか?

与えられたデータ フレーム:

DF <- as.data.frame(matrix(seq(20),nrow=5,ncol=4))
colnames(DF) <- c("A", "B", "C", "D")
write.table(DF, "DF.csv", row.names=FALSE, sep=",")

このように最後の行に新しいデータフレームを追加できます

A <- 1
A <- data.frame(A)
A$B <- 1
A$C <- 1
A$D <- 1
write.table(A, "DF.csv", row.names=FALSE, sep=",", append=TRUE, col.names=FALSE)

これは私が望むものに近いです。しかし、上記の行を DF.csv の最初の行 (ヘッダーのすぐ下) に追加したいと思います。

A   B   C   D
1   1   1   1
1   6   11  16
2   7   12  17
3   8   13  18
4   9   14  19
5   10  15  20

明確にするために、R 内のデータ フレームに行を追加するつもりはありません。R 環境外のファイルの先頭に行を追加したいと考えています。append を使用して外部 .csv ファイルの末尾にデータを追加できるように、.csv ファイルの先頭にデータを「追加」して、最新のデータが常に最初の行に表示されるようにしたいと考えています (長いファイルの最後までスクロールして最新のデータを表示することは避けてください)。

4

1 に答える 1

5

独自の関数を作成します。

my.write.table <- function(df, filename, sep)
{
   ## read the existing content
   temp.df <- read.table(filename, sep)

   ## append in front
   df <- rbind(df, temp.df)

   ## write back the whole data frame
   write.table(df, filename, sep)
}
于 2013-04-21T04:57:57.013 に答える