txt - leer una linea especifica de un archivo en java
Leer líneas por número de un archivo grande (6)
Si es un archivo binario
Algunas discusiones están aquí: Leyendo solo una parte de un archivo Stata .DTA en R
Si es un archivo CSV u otro archivo de texto
Si son contiguos y se encuentran en la parte superior del archivo, solo use el argumento read.csv
para read.csv
o cualquiera de la familia de read.table
de read.table
. De lo contrario, puede combinar los ,nrows
y ,skip
para llamar repetidamente a read.csv
(leyendo en una nueva fila o grupo de filas contiguas con cada llamada) y luego rbind
los resultados.
Tengo un archivo con 15 millones de líneas (no cabe en la memoria). También tengo un pequeño vector de números de línea: las líneas que quiero extraer.
¿Cómo puedo leer las líneas en una sola pasada?
Esperaba una función C que lo haga en una sola pasada.
Antes de poder obtener una solución / respuesta R, lo he hecho en Ruby:
#!/usr/bin/env ruby
NUM_SEQS = 14024829
linenumbers = (1..10).collect{(rand * NUM_SEQS).to_i}
File.open("./data/uniprot_2011_02.tab") do |f|
while line = f.gets
print line if linenumbers.include? f.lineno
end
end
corre rápido (tan rápido como mi almacenamiento puede leer el archivo).
Compilo una solución basada en las discusiones aquí .
scan(filename,what=list(NULL),sep=''/n'',blank.lines.skip = F)
Esto solo te mostrará el número de líneas pero no se leerá en nada. Si realmente desea omitir las líneas en blanco, podría establecer el último argumento en VERDADERO.
Si solo se lee un archivo de texto en general
cat(readLines("filename.txt", n=10), sep="/n")
, donde el parámetro sep
es para configurar el carácter de división.
Sobre la función readLine
, se puede hacer referencia al documento oficial: https://www.rdocumentation.org/packages/base/versions/3.5.1/topics/readLines
Si su archivo tiene longitudes de línea fijas, puede usar ''buscar'' para saltar a cualquier posición de carácter. Así que salta a N * line_length para cada N que quieras y lee una línea.
Sin embargo, a partir de los documentos R:
Use of seek on Windows is discouraged. We have found so many
errors in the Windows implementation of file positioning that
users are advised to use it only at their own risk, and asked not
to waste the R developers'' time with bug reports on Windows''
deficiencies.
También puede usar "buscar" de la biblioteca estándar de C en C, pero no sé si la advertencia anterior también se aplica.
El truco es usar la conexión Y abrirla antes de read.table
.
con<-file(''filename'')
open(con)
read.table(con,skip=5,nrow=1) #6-th line
read.table(con,skip=20,nrow=1) #27-th line
...
close(con)
También puedes intentar scan
, es más rápido y te da más control.