Вот один из подходов: определите функцию для вставки строки в определенную позицию, затем примените функцию к вашим данным, затем запишите файл обратно на диск.
# if the text is from a file `fname` you'd use `dat <- readLines(fname)`
dat <- c("here is line 1",
"here is line 2",
"here is line 3",
"here is line 4")
text_to_insert <- "here is line 3.5"
insert_line_at <- function(dat, to_insert, insert_after){
pre <- dat[1:insert_after]
post <- dat[(insert_after+1):length(dat)]
return(c(pre, to_insert, post))
}
dat_inserted <- insert_line_at(dat, text_to_insert, insert_after=3)
Затем запишите новый текст обратно в любой файл, в котором вы его хотите:
writeLines(dat_inserted, "output_filename.txt")
Если вы работаете с действительно большими файлами, может быть лучше использовать утилиту командной строкикак sed
или awk
.Но если вы хотите придерживаться R, то вышеприведенный подход является простым и понятным.
Обратите внимание, что вы можете вставить символьный вектор to_insert
произвольной длины (включая ноль) - не просто одну строку, как в вашем примере.Так что функция может быть более точно названа insert_lines_at()
.