txt - Importar archivo de texto como cadena de un solo caracter
importar datos csv en r studio (7)
Aquí hay una variante de la solución de @JoshuaUlrich que usa el tamaño correcto en lugar de un tamaño rígido:
fileName <- ''foo.txt''
readChar(fileName, file.info(fileName)$size)
Tenga en cuenta que readChar asigna espacio para la cantidad de bytes que especifique, por lo que readChar(fileName, .Machine$integer.max)
no funciona bien ...
¿Cómo se importa un archivo de texto plano como cadena de un solo carácter en R? Creo que esto probablemente tendrá una respuesta muy simple, pero cuando probé esto hoy descubrí que no podía encontrar una función para hacer esto.
Por ejemplo, supongamos que tengo un archivo foo.txt
con algo que quiero mandar.
Lo intenté con:
scan("foo.txt", what="character", sep=NULL)
pero esto todavía devolvió un vector. Lo conseguí trabajando un poco con:
paste(scan("foo.txt", what="character", sep=" "),collapse=" ")
pero esa es una solución bastante fea que probablemente también sea inestable.
El paquete readr tiene una función para hacer todo por ti.
install.packages("readr") # you only need to do this one time on your system
library(readr)
mystring <- read_file("path/to/myfile.txt")
Esto reemplaza la versión en el paquete stringr.
En caso de que alguien siga viendo esta pregunta 3 años después, el paquete readr de Hadley Wickham tiene una práctica función read_file()
que hará esto por usted.
install.packages("readr") # you only need to do this one time on your system
library(readr)
mystring <- read_file("path/to/myfile.txt")
Lástima que la solución de Sharon ya no se pueda usar. He agregado la solución de Josh O''Brien con la modificación de asieira a mi archivo .Rprofile:
read.text = function(pathname)
{
return (paste(readLines(pathname), collapse="/n"))
}
y utilícelo así: txt = read.text(''path/to/my/file.txt'')
. No pude replicar el hallazgo de writeLines(txt)
y writeLines(txt)
mostró el contenido de file.txt
. Además, después de write(txt, ''/tmp/out'')
el comando diff /tmp/out path/to/my/file.txt
no informó diferencias.
Qué tal si:
string <- readChar("foo.txt",nchars=1e6)
Yo usaría lo siguiente. Debería funcionar bien y no parece feo, al menos para mí:
singleString <- paste(readLines("foo.txt"), collapse=" ")
readChar no tiene mucha flexibilidad, así que combiné tus soluciones (líneas de lectura y pegado).
También he agregado un espacio entre cada línea:
con <- file("/Users/YourtextFile.txt", "r", blocking = FALSE)
singleString <- readLines(con) # empty
singleString <- paste(singleString, sep = " ", collapse = " ")
close(con)