2013-04-21 11 views
5

Przyjrzałem się kilku funkcjom, które umożliwiają dodawanie tekstu do istniejącego pliku danych (.csv lub .txt), takiego jak write.table, write.lines lub sink.Czy można dołączyć do pierwszej linii istniejącego pliku?

Gdy argument append = TRUE, nowe dane są zawsze dodawane po ostatniej istniejącej linii pliku. Czy istnieje możliwość dodania danych do istniejącego pliku w pierwszym wierszu (pod nagłówkiem) - AKA przeciwieństwo append?

Biorąc ramkę danych:

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

mogę dołączyć nową ramkę danych do ostatniej linii jak to

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) 

który jest zbliżony do tego, co chcę. Ale naprawdę chciałbym mieć powyższą linię należy dodać do pierwszej linii DF.csv (tuż poniżej nagłówka) jak tak

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 

Żeby było jasne, bym nie chce dodać wiersz do ramki danych w R. Mam nadzieję dodać wiersz na początku pliku poza środowiskiem R. Tak jak dodanie może zostać użyte do dodania danych na końcu zewnętrznego pliku .csv, mam nadzieję "dołączyć" dane na początek pliku .csv, więc moje najnowsze dane zawsze pojawiają się w pierwszym wierszu (do unikaj przewijania do końca długiego pliku, aby zobaczyć najbardziej aktualne dane).

+0

w dowolnym języku programowania komputerowego, można ogólnie przyjąć, że pliki tekstowe są stałe i nie mogą być zmieniane. Pomyśl o tym w ten sposób: plik tekstowy to naprawdę tylko jeden ciąg ciągłych znaków. Linie, które widzimy, to edytor tekstu, który interpretuje jedną z postaci ("\ n") w określony sposób. Pytasz, czy możliwe jest wstawienie niektórych znaków do tego ciągu. Jak byś to zrobił bez nadpisywania znaków, które już tam są? Jeśli chcesz zastąpić 3 znaki trzema innymi znakami, możesz po prostu zastąpić oryginalne 3 znaki. – 7stud

+0

Powinieneś szukać w SO dla postu dotyczącego wstawiania linii w data.frames –

+0

Napotkałem "R: Wstaw wektor jako wiersz w data.frame", ale mój problem próbował zapisać/dołączyć wiersz do osobnego. Plik CSV spoza R. Nie ramka danych w R – Vinterwoo

Odpowiedz

5

Napisz własną funkcję:

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) 
} 
Powiązane problemy