2013-04-21 2 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 символа. – 7stud

+0

Вы должны искать SO для сообщения относительно вставки строк в data.frames –

+0

Я столкнулся с «R: вставляем вектор в виде строки в data.frame» ранее, но моя проблема пыталась написать/добавить строку в отдельную. csv-файл за пределами R. Не фрейм данных в R – Vinterwoo

ответ

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) 
} 
Смежные вопросы