file-io - studio - leer csv en r
Escribir lĂneas de texto a un archivo en R (10)
La opción del sistema feo.
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
En el lenguaje de script R, ¿cómo escribo líneas de texto, por ejemplo, las siguientes dos líneas?
Hello
World
a un archivo llamado "output.txt"?
¿Qué pasa con un simple writeLines()
?
txt <- "Hallo/nWorld"
writeLines(txt, "outfile.txt")
o
txt <- c("Hallo", "World")
writeLines(txt, "outfile.txt")
Basado en share :
file <- file("test.txt")
writeLines(yourObject, file)
close(file)
Tenga en cuenta que yourObject
debe estar en un formato de cadena; as.character()
para convertir si lo necesita.
Pero esto es demasiado escribir para cada intento de guardar. Vamos a crear un fragmento de código en RStudio.
En Opciones globales >> Código >> Fragmento de código, escriba esto:
snippet wfile
file <- file(${1:filename})
writeLines(${2:yourObject}, file)
close(file)
Luego, durante la codificación, escriba wfile
y presione Tab .
En realidad puedes hacerlo con sink()
:
sink("outfile.txt")
cat("hello")
cat("/n")
cat("world")
sink()
por lo tanto hacer
file.show("outfile.txt")
# hello
# world
Para redondear las posibilidades, puede usar writeLines()
con sink()
, si desea:
> sink("tempsink", type="output")
> writeLines("Hello/nWorld")
> sink()
> file.show("tempsink", delete.file=TRUE)
Hello
World
Para mí, siempre parece más intuitivo usar print()
, pero si lo haces, la salida no será lo que quieres:
...
> print("Hello/nWorld")
...
[1] "Hello/nWorld"
Podrías hacer eso en una sola declaración.
cat("hello","world",file="output.txt",sep="/n",append=TRUE)
Yo sugiero:
writeLines(c("Hello","World"), "output.txt")
Es más corto y más directo que la respuesta actual aceptada. No es necesario hacer:
fileConn<-file("output.txt")
# writeLines command using fileConn connection
close(fileConn)
Porque la documentación para writeLines()
dice:
Si la
con
es una cadena de caracteres, la función llama alfile
para obtener una conexión de archivo que se abre durante la llamada de la función.
# default settings for writeLines(): sep = "/n", useBytes = FALSE
# so: sep = "" would join all together e.g.
Yo usaría el comando cat()
como en este ejemplo:
> cat("Hello",file="outfile.txt",sep="/n")
> cat("World",file="outfile.txt",append=TRUE)
A continuación, puede ver los resultados de con R con
> file.show("outfile.txt")
hello
world
1 .Utilizando argumento de archivo en cat
.
cat("Hello World", file="filename")
2. Use la función de sink
para redirigir todos los resultados de impresión y cat al archivo.
sink("filename") # Begin writing output to file
print("Hello World")
sink() # Resume writing output to console
NOTA : La función de impresión no puede redirigir su salida, pero la función de sumidero puede forzar toda la salida a un archivo.
3 .Hacer la conexión a un archivo y escribir .
con <- file("filename", "w")
cat("Hello World", file=con)
close(con)
fileConn<-file("output.txt")
writeLines(c("Hello","World"), fileConn)
close(fileConn)