I would recommend learning read_fwffrom the "readr" package. You can do something like this:
library(readr)
len <- nchar(readLines("yourfile.txt", n = 1))
read_fwf("yourfile.txt", fwf_widths(rep(1, len)))
"iotools" , :
library(iotools)
len <- nchar(readLines("yourfile.txt", n = 1))
input.file("yourfile.txt", formatter = dstrfw,
col_types = rep("integer", len), widths = rep(1, len))
POC:
a <- tempfile()
writeLines("0101010100101010101010101010
1010101001010101010101010111
1111101010101010100101010101", a)
len <- nchar(readLines(a, n = 1))
library(readr)
read_fwf(a, fwf_widths(rep(1, len)))
, , read_fwf. , "iotools" awk + fread.
:
set.seed(1)
A <- replicate(10, sample(0:1, 70000, TRUE), FALSE)
A <- sapply(A, paste, collapse = "")
writeLines(rep(A, 800/length(A)), "somefile.txt")
. , , , .
, readr : -)
Freadr <- function(infile = "somefile.txt") {
len <- nchar(readLines(infile, n = 1))
read_fwf(infile, fwf_widths(rep(1, len)))
}
system.time(temp1 <- Freadr())
Fiotools <- function(infile = "somefile.txt") {
len <- nchar(readLines(infile, n = 1))
input.file(infile, formatter = dstrfw,
col_types = rep("integer", len), widths = rep(1, len))
}
system.time(temp2 <- Fiotools())
Fawk <- function(infile = "somefile.txt") {
cmd <- sprintf("awk '{gsub(/./,\"&,\", $1);print $1}' %s", infile)
fread(cmd)
}
system.time(temp3 <- Fawk())
R :
fun4 <- function(infile = "somefile.txt") {
do.call(rbind, lapply(strsplit(readLines(infile), "", TRUE), as.numeric))
}
system.time(fun4())
: matrix, data.frame data.table, , .