Записать строки текста в файл в R - PullRequest
306 голосов
/ 18 марта 2010

На языке сценариев R как писать строки текста, например, следующие две строки

Hello
World

в файл с именем "output.txt"?

Ответы [ 11 ]

372 голосов
/ 18 марта 2010
fileConn<-file("output.txt")
writeLines(c("Hello","World"), fileConn)
close(fileConn)
136 голосов
/ 18 марта 2010

На самом деле вы можете сделать это с sink():

sink("outfile.txt")
cat("hello")
cat("\n")
cat("world")
sink()

следовательно сделайте:

file.show("outfile.txt")
# hello
# world
104 голосов
/ 20 сентября 2011

Я бы использовал команду cat(), как в этом примере:

> cat("Hello",file="outfile.txt",sep="\n")
> cat("World",file="outfile.txt",append=TRUE)

Затем вы можете просмотреть результаты с помощью R с помощью

> file.show("outfile.txt")
hello
world
44 голосов
/ 31 января 2014

А как насчет простого writeLines()?

txt <- "Hallo\nWorld"
writeLines(txt, "outfile.txt")

или

txt <- c("Hallo", "World")
writeLines(txt, "outfile.txt")
16 голосов
/ 08 июня 2015

Вы можете сделать это в одном выражении

cat("hello","world",file="output.txt",sep="\n",append=TRUE)
6 голосов
/ 21 июня 2018

Я предлагаю:

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.
2 голосов
/ 21 июля 2017

На основании лучший ответ :

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 .

2 голосов
/ 29 апреля 2015

Чтобы округлить возможности, вы можете использовать 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"
1 голос
/ 11 декабря 2014

Уродливая системная опция

ptf <- function (txtToPrint,outFile){system(paste(paste(paste("echo '",cat(txtToPrint),sep = "",collapse = NULL),"'>",sep = "",collapse = NULL),outFile))}
#Prints txtToPrint to outFile in cwd. #!/bin/bash echo txtToPrint > outFile
0 голосов
/ 18 марта 2019

Tidyverse Edition с трубкой и write_lines() из readr

library(tidyverse)
c('Hello', 'World') %>% write_lines( "output.txt")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...