На языке сценариев R, как мне написать строки текста, например, следующие две строки
Hello
World
в файл с именем "output.txt"?
На языке сценариев R, как мне написать строки текста, например, следующие две строки
Hello
World
в файл с именем "output.txt"?
Ответы:
fileConn<-file("output.txt")
writeLines(c("Hello","World"), fileConn)
close(fileConn)
writeLines()
примерно в десять раз быстрее, чем комбинация sink()
иcat()
На самом деле вы можете сделать это с sink()
:
sink("outfile.txt")
cat("hello")
cat("\n")
cat("world")
sink()
следовательно сделайте:
file.show("outfile.txt")
# hello
# world
Я бы использовал cat()
команду как в этом примере:
> cat("Hello",file="outfile.txt",sep="\n")
> cat("World",file="outfile.txt",append=TRUE)
Затем вы можете просмотреть результаты с помощью R с
> file.show("outfile.txt")
hello
world
Что насчет простого writeLines()
?
txt <- "Hallo\nWorld"
writeLines(txt, "outfile.txt")
или
txt <- c("Hallo", "World")
writeLines(txt, "outfile.txt")
"Hallo\nWorld"
это длина одного вектора типа символа. Просто попробуйтеtxt <- "Hallo\nWorld"; is.character(txt) && length(txt) == 1 && is.vector(txt)
writeLines(txt, con="outfile.txt")
.
> coefficients<-summary(model) > writeLines(coefficients, "coefficients") Error in writeLines(coefficients, "coefficients") : invalid 'text' argument
Вы можете сделать это в одном утверждении
cat("hello","world",file="output.txt",sep="\n",append=TRUE)
Я предлагаю:
writeLines(c("Hello","World"), "output.txt")
Он короче и прямее, чем текущий принятый ответ. Не нужно делать:
fileConn<-file("output.txt")
# writeLines command using fileConn connection
close(fileConn)
Потому что в документации writeLines()
сказано:
Если
con
это символьная строка, функция вызываетfile
соединение с файлом, которое открывается на время вызова функции.
# default settings for writeLines(): sep = "\n", useBytes = FALSE
# so: sep = "" would join all together e.g.
Tidyverse издание с трубкой и write_lines()
из чтения
library(tidyverse)
c('Hello', 'World') %>% write_lines( "output.txt")
Короткие способы записи строк текста в файл в R могут быть реализованы с помощью cat или writeLines, как уже показано во многих ответах. Некоторые из самых коротких возможностей могут быть:
cat("Hello\nWorld", file="output.txt")
writeLines("Hello\nWorld", "output.txt")
Если вам не нравится "\ n", вы также можете использовать следующий стиль:
cat("Hello
World", file="output.txt")
writeLines("Hello
World", "output.txt")
В то время как writeLines добавляет новую строку в конец файла, что не относится к cat . Это поведение может быть скорректировано с помощью:
writeLines("Hello\nWorld", "output.txt", sep="") #No newline at end of file
cat("Hello\nWorld\n", file="output.txt") #Newline at end of file
cat("Hello\nWorld", file="output.txt", sep="\n") #Newline at end of file
Но главное отличие в том , что кошка использует R объектов и writeLines в векторе символов в качестве аргумента. Таким образом, выписывание, например, чисел 1:10, должно быть приведено для writeLines, тогда как оно может использоваться как в cat:
cat(1:10)
writeLines(as.character(1:10))
Чтобы округлить возможности, вы можете использовать writeLines()
с sink()
, если вы хотите:
> sink("tempsink", type="output")
> writeLines("Hello\nWorld")
> sink()
> file.show("tempsink", delete.file=TRUE)
Hello
World
Для меня это всегда кажется наиболее интуитивно понятным в использовании print()
, но если вы сделаете это, результат будет не тем, что вы хотите:
...
> print("Hello\nWorld")
...
[1] "Hello\nWorld"
На основании лучшего ответа :
file <- file("test.txt")
writeLines(yourObject, file)
close(file)
Обратите внимание, что yourObject
должен быть в формате строки; используйте as.character()
для конвертации, если вам нужно.
Но это слишком много печатать для каждой попытки сохранения. Давайте создадим фрагмент в RStudio.
В Глобальные параметры >> Код >> Фрагмент введите:
snippet wfile
file <- file(${1:filename})
writeLines(${2:yourObject}, file)
close(file)
Затем во время кодирования введите wfile
и нажмитеTab .
file <- file(...)
Линия выглядит подозрительным мне. Разве это не вызовет file
как функцию и не присвоит file
новое значение? file()
Работает ли даже после запуска этого фрагмента кода? У меня нет доступа к установке R, чтобы проверить себя прямо сейчас ...
Как насчет простого write.table()
?
text = c("Hello", "World")
write.table(text, file = "output.txt", col.names = F, row.names = F, quote = F)
Параметры col.names = FALSE
и row.names = FALSE
убедитесь, что исключены имена строк и столбцов в текстовом формате, а параметр quote = FALSE
исключает эти кавычки в начале и конце каждой строки в текстовом формате. Чтобы прочитать данные обратно, вы можете использовать text = readLines("output.txt")
.
В более новых версиях R writeLines
сохранит возврат и пробелы в вашем тексте, поэтому вам не нужно включать \n
в конце строки, и вы можете записать один большой кусок текста в файл. Это будет работать с примером,
txt <- "Hello
World"
fileConn<-file("output.txt")
writeLines(txt, fileConn)
close(fileConn)
Но вы также можете использовать эту настройку, чтобы просто включить текст со структурой (разрывы строк или отступы)
txt <- "Hello
world
I can
indent text!"
fileConn<-file("output.txt")
writeLines(txt, fileConn)
close(fileConn)