En el lenguaje de programación R, ¿cómo escribo líneas de texto, por ejemplo, las dos líneas siguientes?
Hello
World
a un archivo llamado "output.txt"?
En el lenguaje de programación R, ¿cómo escribo líneas de texto, por ejemplo, las dos líneas siguientes?
Hello
World
a un archivo llamado "output.txt"?
Respuestas:
fileConn<-file("output.txt")
writeLines(c("Hello","World"), fileConn)
close(fileConn)
writeLines()
es aproximadamente diez veces más rápida que la combinación de sink()
ycat()
En realidad, usted puede hacerlo con sink()
:
sink("outfile.txt")
cat("hello")
cat("\n")
cat("world")
sink()
por lo tanto hacer:
file.show("outfile.txt")
# hello
# world
Usaría el cat()
comando como en este ejemplo:
> cat("Hello",file="outfile.txt",sep="\n")
> cat("World",file="outfile.txt",append=TRUE)
Luego puede ver los resultados con R con
> file.show("outfile.txt")
hello
world
¿Qué pasa con un simple writeLines()
?
txt <- "Hallo\nWorld"
writeLines(txt, "outfile.txt")
o
txt <- c("Hallo", "World")
writeLines(txt, "outfile.txt")
"Hallo\nWorld"
es un vector de longitud uno del tipo de carácter. Solo inténtalotxt <- "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
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 de writeLines()
dice:
Si
con
es una cadena de caracteres, la función llamafile
para obtener una conexión de archivo que se abre mientras dura la llamada de función.
# default settings for writeLines(): sep = "\n", useBytes = FALSE
# so: sep = "" would join all together e.g.
Edición tidyverse con tubo y write_lines()
de lector
library(tidyverse)
c('Hello', 'World') %>% write_lines( "output.txt")
Las formas cortas de escribir líneas de texto en un archivo en R podrían realizarse con cat o writeLines como ya se muestra en muchas respuestas. Algunas de las posibilidades más cortas pueden ser:
cat("Hello\nWorld", file="output.txt")
writeLines("Hello\nWorld", "output.txt")
En caso de que no le guste el "\ n", también puede usar el siguiente estilo:
cat("Hello
World", file="output.txt")
writeLines("Hello
World", "output.txt")
Mientras writeLines agrega una nueva línea al final del archivo, no es el caso de cat . Este comportamiento podría ser ajustado por:
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
Pero la principal diferencia es que cat usa objetos R y escribe líneas de un vector de caracteres como argumento. Por lo tanto, escribir, p. Ej., Los números 1:10 se deben convertir en writeLines mientras se puede usar como está en cat:
cat(1:10)
writeLines(as.character(1:10))
Para completar las posibilidades, puede usar writeLines()
con sink()
, si lo desea:
> sink("tempsink", type="output")
> writeLines("Hello\nWorld")
> sink()
> file.show("tempsink", delete.file=TRUE)
Hello
World
Para mí, siempre parece más intuitivo de usar print()
, pero si lo haces, la salida no será lo que deseas:
...
> print("Hello\nWorld")
...
[1] "Hello\nWorld"
Basado en la mejor respuesta :
file <- file("test.txt")
writeLines(yourObject, file)
close(file)
Tenga en cuenta que yourObject
debe estar en un formato de cadena; use as.character()
para convertir si lo necesita.
Pero esto es escribir demasiado para cada intento de salvar. Creemos un fragmento en RStudio.
En Opciones globales >> Código >> Fragmento, escriba esto:
snippet wfile
file <- file(${1:filename})
writeLines(${2:yourObject}, file)
close(file)
Luego, durante la codificación, escriba wfile
y presioneTab .
file <- file(...)
línea me parece sospechosa. ¿No es tanto invocar file
como una función y asignar file
un nuevo significado? ¿ file()
Funciona incluso después de que se ejecuta este fragmento de código? No tengo acceso a una instalación R para
¿Qué tal un simple write.table()
?
text = c("Hello", "World")
write.table(text, file = "output.txt", col.names = F, row.names = F, quote = F)
Los parámetros col.names = FALSE
y row.names = FALSE
asegúrese de excluir los nombres de fila y columna en el txt, y el parámetro quote = FALSE
excluye esas comillas al principio y al final de cada línea en el txt. Para volver a leer los datos, puede usar text = readLines("output.txt")
.
En las versiones más nuevas de R, writeLines
conservará retornos y espacios en su texto, por lo que no necesita incluirlos \n
al final de las líneas y puede escribir una gran porción de texto en un archivo. Esto funcionará con el ejemplo,
txt <- "Hello
World"
fileConn<-file("output.txt")
writeLines(txt, fileConn)
close(fileConn)
Pero también podría usar esta configuración para incluir simplemente texto con estructura (saltos de línea o sangrías)
txt <- "Hello
world
I can
indent text!"
fileConn<-file("output.txt")
writeLines(txt, fileConn)
close(fileConn)