In de R-scriptaal, hoe schrijf ik de tekst, b.v. de volgende twee regels
Hello
World
naar een bestand met de naam “Output.txt”?
Antwoord 1, Autoriteit 100%
fileConn<-file("output.txt")
writeLines(c("Hello","World"), fileConn)
close(fileConn)
Antwoord 2, Autoriteit 34%
eigenlijk u kan doen met sink()
:
sink("outfile.txt")
cat("hello")
cat("\n")
cat("world")
sink()
Vandaar:
file.show("outfile.txt")
# hello
# world
Antwoord 3, Autoriteit 25%
Ik zou de cat()
-opdracht gebruiken zoals in dit voorbeeld:
> cat("Hello",file="outfile.txt",sep="\n")
> cat("World",file="outfile.txt",append=TRUE)
U kunt vervolgens de resultaten bekijken van met R met
> file.show("outfile.txt")
hello
world
Antwoord 4, Autoriteit 14%
Wat is ongeveer een eenvoudige writeLines()
?
txt <- "Hallo\nWorld"
writeLines(txt, "outfile.txt")
of
txt <- c("Hallo", "World")
writeLines(txt, "outfile.txt")
Antwoord 5, Autoriteit 4%
U kunt dat in een enkele verklaring
doen
cat("hello","world",file="output.txt",sep="\n",append=TRUE)
Antwoord 6, autoriteit 3%
Ik stel voor:
writeLines(c("Hello","World"), "output.txt")
Het is korter en directer dan het huidige geaccepteerde antwoord.
Het is niet nodig om:
fileConn<-file("output.txt")
# writeLines command using fileConn connection
close(fileConn)
Omdat de documentatie voor writeLines()
zegt:
Als de
con
een tekenreeks is, roept de functiefile
aan om
een bestandsverbinding die wordt geopend voor de duur van de functie
bellen.
# default settings for writeLines(): sep = "\n", useBytes = FALSE
# so: sep = "" would join all together e.g.
Antwoord 7, autoriteit 2%
tidyverse-editie met pipe en write_lines()
van readr
library(tidyverse)
c('Hello', 'World') %>% write_lines( "output.txt")
Antwoord 8, autoriteit 2%
Korte manieren om regels tekst naar een bestand in R te schrijvenkunnen worden gerealiseerd met catof writeLineszoals al in veel antwoorden getoond. Enkele van de kortste mogelijkheden zijn:
cat("Hello\nWorld", file="output.txt")
writeLines("Hello\nWorld", "output.txt")
Als je de “\n” niet leuk vindt, kun je ook de volgende stijl gebruiken:
cat("Hello
World", file="output.txt")
writeLines("Hello
World", "output.txt")
Terwijl writeLines
een newlinetoevoegt aan het einde van het bestand, is dat niet het geval voor cat
.
Dit gedrag kan worden aangepast door:
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
Maar het belangrijkste verschil is dat cat
R-objectenen writeLines
een tekenvectorals argument gebruikt. Dus uitschrijven van bijv. de nummers 1:10moeten worden gecast voor writeLines terwijl het kan worden gebruikt zoals het is in cat:
cat(1:10)
writeLines(as.character(1:10))
en cat
kunnen veelobjecten aannemen, maar writeLines
slechts éénvector:
cat("Hello", "World", sep="\n")
writeLines(c("Hello", "World"))
Antwoord 9
Om de mogelijkheden compleet te maken, kun je writeLines()
gebruiken met sink()
, als je wilt:
> sink("tempsink", type="output")
> writeLines("Hello\nWorld")
> sink()
> file.show("tempsink", delete.file=TRUE)
Hello
World
Voor mij lijkt het altijd het meest intuïtief om print()
te gebruiken, maar als je dat doet, zal de uitvoer niet zijn wat je wilt:
...
> print("Hello\nWorld")
...
[1] "Hello\nWorld"
Antwoord 10
Op basis van het beste antwoord:
file <- file("test.txt")
writeLines(yourObject, file)
close(file)
Houd er rekening mee dat het yourObject
een tekenreeksindeling moet hebben; gebruik as.character()
om te converteren als dat nodig is.
Maar dit is teveel typen voor elkepoging tot opslaan. Laten we een fragment maken in RStudio.
In Algemene opties >> Code >> Fragment, typ dit:
snippet wfile
file <- file(${1:filename})
writeLines(${2:yourObject}, file)
close(file)
Vervolgens, tijdens het coderen, typt u wfile
en drukt u op Tab.
Antwoord 11
Hoe zit het met een eenvoudige write.table()
?
text = c("Hello", "World")
write.table(text, file = "output.txt", col.names = F, row.names = F, quote = F)
De parameters col.names = FALSE
en row.names = FALSE
zorgen ervoor dat de rij- en kolomnamen in de txt worden uitgesloten, en de parameter quote = FALSE
sluit de aanhalingstekens aan het begin en einde van elke regel in de txt uit.
Om de gegevens weer in te lezen, kunt u text = readLines("output.txt")
gebruiken.
Antwoord 12
De lelijke systeemoptie
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
Antwoord 13
In nieuwere versies van R behoudt writeLines
de resultaten en spaties in uw tekst, zodat u \n
niet aan het einde van regels hoeft op te nemen en u kan een groot stuk tekst naar een bestand schrijven. Dit werkt met het voorbeeld,
txt <- "Hello
World"
fileConn<-file("output.txt")
writeLines(txt, fileConn)
close(fileConn)
Maar u kunt deze instelling ook gebruiken om eenvoudig tekst met structuur (regeleinden of inspringingen) op te nemen
txt <- "Hello
world
I can
indent text!"
fileConn<-file("output.txt")
writeLines(txt, fileConn)
close(fileConn)