Як в мові сценаріїв 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 додає новий рядок в кінці файлу, що не стосується кота . Таку поведінку можна було скорегувати:
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 для ліній запису потрібно вводити, хоча його можна використовувати як у кота:
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
переконайтесь, що виключаєте назви рядків та стовпців у txt, а параметр quote = FALSE
виключає ці лапки на початку та в кінці кожного рядка в txt. Щоб прочитати дані назад, ви можете використовувати 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)