Dans le langage de script R, comment puis-je écrire des lignes de texte, par exemple les deux lignes suivantes
Hello
World
dans un fichier nommé "output.txt"?
fileConn<-file("output.txt")
writeLines(c("Hello","World"), fileConn)
close(fileConn)
En fait vous pouvez le faire avec sink()
:
sink("outfile.txt")
cat("hello")
cat("\n")
cat("world")
sink()
par conséquent:
file.show("outfile.txt")
# hello
# world
J'utiliserais la commande cat()
comme dans cet exemple:
> cat("Hello",file="outfile.txt",sep="\n")
> cat("World",file="outfile.txt",append=TRUE)
Vous pouvez ensuite afficher les résultats de avec R avec
> file.show("outfile.txt")
hello
world
Qu'en est-il d'une simple writeLines()
?
txt <- "Hallo\nWorld"
writeLines(txt, "outfile.txt")
ou
txt <- c("Hallo", "World")
writeLines(txt, "outfile.txt")
Vous pouvez le faire en une seule déclaration
cat("hello","world",file="output.txt",sep="\n",append=TRUE)
Je suggère:
writeLines(c("Hello","World"), "output.txt")
Il est plus court et plus direct que la réponse acceptée actuellement. Il n'est pas nécessaire de faire:
fileConn<-file("output.txt")
# writeLines command using fileConn connection
close(fileConn)
Parce que la documentation de writeLines()
dit:
Si
con
est une chaîne de caractères, la fonction appellefile
pour obtenir une connexion de fichier qui est ouverte pendant la durée de l'appel de la fonction.
# default settings for writeLines(): sep = "\n", useBytes = FALSE
# so: sep = "" would join all together e.g.
Basé sur la meilleure réponse :
file <- file("test.txt")
writeLines(yourObject, file)
close(file)
Notez que la yourObject
doit être au format chaîne; utilisez as.character()
pour convertir si vous en avez besoin.
Mais c’est trop pour taper pour chaque tentative de sauvegarde . Créons un extrait de code dans RStudio.
Dans Options globales >> Code >> Extrait, tapez ceci:
snippet wfile
file <- file(${1:filename})
writeLines(${2:yourObject}, file)
close(file)
Puis, lors du codage, tapez wfile
et appuyez sur Tab.
Pour compléter les possibilités, vous pouvez utiliser writeLines()
avec sink()
, si vous le souhaitez:
> sink("tempsink", type="output")
> writeLines("Hello\nWorld")
> sink()
> file.show("tempsink", delete.file=TRUE)
Hello
World
Pour moi, il semble toujours plus intuitif d'utiliser print()
, mais si vous faites cela, le résultat ne sera pas ce que vous voulez:
...
> print("Hello\nWorld")
...
[1] "Hello\nWorld"
Des manières courtes pour écrire des lignes de texte dans un fichier en R pourraient être réalisées avec cat ou writeLines = comme déjà montré dans de nombreuses réponses. Certaines des possibilités les plus courtes pourraient être:
cat("Hello\nWorld", file="output.txt")
writeLines("Hello\nWorld", "output.txt")
Si vous n'aimez pas le "\ n", vous pouvez également utiliser le style suivant:
cat("Hello
World", file="output.txt")
writeLines("Hello
World", "output.txt")
While writeLines ajoute une nouvelle ligne à la fin du fichier. le cas pour chat . Ce comportement pourrait être ajusté par:
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
Mais la principale différence est que cat utilise R objets et writeLines a vecteur de caractères en tant qu'argument. Donc écrire par exemple les nombres 1:10 doivent être transtypés pour writeLines alors qu'il peut être utilisé tel quel dans cat:
cat(1:10)
writeLines(as.character(1:10))
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
édition tidyverse avec pipe et write_lines()
de readr
library(tidyverse)
c('Hello', 'World') %>% write_lines( "output.txt")