2013-04-21 24 views
5

Ho esaminato diverse funzioni che sono in grado di aggiungere testo a un file di dati esistente (.csv o .txt) come write.table, write.lines o sink.È possibile aggiungere alla prima riga di un file esistente?

Quando l'argomento append = TRUE, i nuovi dati vengono sempre aggiunti dopo l'ultima riga esistente del file. È possibile aggiungere dati a un file esistente sulla prima riga (sotto l'intestazione) - AKA opposto di append?

dato un frame di dati:

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=",") 

posso aggiungere una nuova cornice di dati fino all'ultima riga come questa

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) 

che è vicino a quello che voglio. Ma mi piacerebbe davvero avere la linea di cui sopra da aggiungere alla prima riga del DF.csv (proprio sotto l'intestazione) in questo modo

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 

Per essere chiari, io non cercando di aggiungere una riga in un frame di dati all'interno di R. Spero di aggiungere una riga all'inizio di un file al di fuori dell'ambiente R. Proprio come append può essere usato per aggiungere dati alla fine di un file .csv esterno, spero di "aggiungere" i dati all'inizio di un file .csv, in modo che i miei ultimi dati arrivino sempre nella prima riga (per evitare di scorrere fino alla fine di un file lungo per vedere i dati più recenti).

+0

In ogni linguaggio di programmazione, si può generalmente presumere che i file di testo sono fissi e non possono essere cambiati. Pensaci in questo modo: un file di testo è in realtà solo una lunga serie continua di caratteri. Le linee che vediamo sono un editor di testo che interpreta uno dei caratteri ('\ n') in un certo modo. Quello che stai chiedendo è se è possibile inserire alcuni caratteri in quella stringa. Come lo faresti senza sovrascrivere i personaggi che sono già lì? Se si desidera sostituire 3 caratteri con altri 3 caratteri, è possibile sovrascrivere solo i 3 caratteri originali. – 7stud

+0

Dovresti cercare SO per post riguardante l'inserimento di righe in data.frames –

+0

Mi sono imbattuto in "R: inserisci un vettore come riga in data.frame" in precedenza, ma il mio problema ha cercato di scrivere/aggiungere una riga in un file separato. file CSV al di fuori di R. Non un frame di dati all'interno di R – Vinterwoo

risposta

5

scrivere la propria funzione:

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) 
} 
Problemi correlati