2013-04-21 73 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) 
} 
相關問題