2013-04-21 44 views
5

我已经看过几个能够将文本添加到现有数据文件(.csv或.txt)(如write.table,write.lines或sink)的函数。是否可以附加到现有文件的第一行?

当append参数= TRUE时,新数据总是添加在文件的最后一行之后。是否有可能将数据添加到现有文件的第一行(标题下方) - AKA与append相对吗?

如果有一个数据帧:

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文件的开头,以便我的最新数据始终出现在第一行(到避免滚动到长文件的末尾以查看最新数据)。

+0

在任何计算机编程语言,通常可以假定文本文件是固定的,不能改变。想想这样:一个文本文件实际上只是一个连续的字符串。我们看到的这些行是一个文本编辑器,以某种方式解释其中一个字符('\ n')。你问的是如果有可能在字符串中插入一些字符。如果不覆盖已经存在的角色,你会怎么做?如果您想用3个其他字符替换3个字符,则可以覆盖原来的3个字符。 – 7stud 2013-04-21 04:35:06

+0

你应该搜索关于在数据框架中插入行的帖子SO – 2013-04-21 04:55:12

+0

我遇到过“R:先前在数据框架中插入一个向量作为一行”,但我的问题一直试图将一行写入/追加到单独的行中。 c之外的csv文件R不是R之内的数据帧 – Vinterwoo 2013-04-21 05:15:54

回答

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) 
} 
相关问题