joari icon

readfile.R

joari | PRO | 11/28/18 06:35:26 PM UTC | 0 ⭐ | 7417 👁️ | Never ⏰ | []
R |

6.38 KB

|

None

|

0 👍

/

0 👎

processFile = function(filepath) {
  ENA <- NULL
  con = file(filepath, "r")
  # nline <- 0
  while ( TRUE ) {
    line = readLines(con, n = 1)
    # nline <- nline + 1
    if ( length(line) == 0 ) {
      break
    }
    # print(c(nline, length(line)))
    dd <- grep("\\d+", line)
    dd <- as.numeric(dd[[1]])
    ENA <- rbind (ENA, dd)
  }
  close(con)
  # print(c("ultimo ",nline, length(line)))
  return(ENA)
}
 
processChunk = function(connection) {
  ENA <- NULL
  nline <- 0
  while ( TRUE ) {
    line = readLines(connection, n = 1)
    if(grepl(pattern = "\f", line) == TRUE) {
      # if ( length(line) == 0 ) {
      break
    }
    # print(c(nline, length(line)))
    if ( length(line) > 0 ) {
      nline <- nline + 1
      ENA <- rbind (ENA, as.numeric(grep("\\d+", line))[[1]])
    }
  }
  print(c("ultimo nline = ",nline, "length line = ", length(line)))
  return(ENA)
}
 
# ***********************************************************************************************
# Clean variables & Set working directory
rm(list=ls());                     # limpa vari?veis
workdir <- "D:/ProjetosONS/Cursos/Alex/R-project/ENAs/2018/"; # diretorio de trabalho
# workdir <- "~/ProjetosONS/Cursos/Alex/R-project/ENAs/2018/readtxt/"; # diretorio de trabalho
setwd(workdir);
# ***********************************************************************************************
# Find REEs names and total number in file pmo.dat
con = file("pmo.dat", "r")
pat <- "ASSOCIACAO ENTRE REEs E SUBSISTEMAS"
while ( TRUE ) {
  line = readLines(con, n = 1)
  # print(line)
  if ( length(line) == 0 ) break
  if(grepl(pattern = pat, line) == TRUE) {
    print(line)
    break
  }
}  
line = readLines(con, n = 6)
# Save REEs names
NameREE <- list()
while (TRUE) {
  line <- readLines(con, n = 1)
  aa <- strsplit(line, split="\\s+")
  if (substring(line, 5, 7) != "---"){
    NameREE <- c(NameREE, aa[[1]][3])
  }
  else {
    print("NameREE", str(NameREE))
    break
  }
}
totREE <- length(NameREE)
 
# ***********************************************************************************************
# Get initial and fnal year for ENA in file pmo.dat
pat <- "CONFIGURACAO DOS REEs"
while ( TRUE ) {
  line = readLines(con, n = 1)
  # print(line)
  if ( length(line) == 0 ) break
  if(grepl(pattern = pat, line) == TRUE) {
    print(line)
    break
  }
}  
line <- readLines(con, n = 4)
line <- readLines(con, n = 1)
aa <- strsplit(line, split="\\s+")           
anoFim <- as.numeric(aa[[1]][11])
anoIni <- as.numeric(aa[[1]][10])
totYears <- anoFim - anoIni + 1
 
# ***********************************************************************************************
# Read energy inflow in parp.dat for all REEs
Btt = array(0, dim=c(totREE,totYears,13))
rownames(Btt) <- NameREE
 
close(con)
con = file("parp.dat", "r")
nREE <- 0
# for (nREE in 1:length(NameREE)) {
# for (nREE in 1:9) {
# while ( nREE <= 9) {
while (nREE <= totREE) {
  line = readLines(con, n = 1)
  # print(line)
  if ( length(line) == 0 ) break
  if(grepl(pattern = "CONFIGURACAO No.    1", line) == TRUE) {
    # print(line)
    aa <- strsplit(line, split="\\s+")
    line = readLines(con, n = 4)
    nREE <- nREE + 1
    print(paste0("nREE = ", nREE, "  name = ", aa[[1]][7]))
    Btt[nREE,,] <- as.matrix(read.table(con, nrows = totYears))
  }
}
 
print(" fim de leitura de dados ")
 
for (nREE in 1:totREE ) {
  print(paste0("nREE = ", nREE, "  name = ", NameREE[[nREE]]))
  print(Btt[nREE,1:5,1:13])
}
 
 
# Xtt = array(0, dim=c(15,85,13))
 
# AAA <- processChunk(con)
# X[nREE,,] <- AAA
# X[nREE,1:5,1:13]
# break
 
# print(line)
# library(rlist)
# list.append
# list <- c(list, newelement)
# aa <- strsplit(line, split="\\s+")
# aa[[1]][7]
# line = readLines(con, n = 4)
#line = readLines(con, n = 1)
#print(line)
 
# nREE <- nREE + 1
# print(c("nREE = ", nREE, "name = ", aa[[1]][7]))
# AAA <- processChunk(con)
 
# X[nREE,,] <- AAA
# 
# X[nREE,1:8,1:13]
 
 
 
# test.fixed <- read.table(connection, nrows = 85)
# 
# BBB[[4]] <- test.fixed
# 
# Tmp file
# fifoname <- "tmp.txt"
# myfifo <- file(fifoname, "w+")
# con <- file(filepath, "r")
# for (i in 1:10) {
#   writeLines( readLines(con, n=1), myfifo )
# }
# flush(myfifo)
# close(myfifo)
# myfifo = file(fifoname, "r")
# test.pipe <- read.fwf(myfifo, width = c(4, 10, rep(11,11)))
# 
# 
# 
# # Tmp stream (fifo)
# fifoname <- tempfile(fileext="-fifo")
# myfifo <- fifo(fifoname, "w+")
# con <- file("foo", "r")
# for (i in 1:2) {
#   writeLines( readLines(con, n=1), myfifo )
# }
# for (i in 1:20) {
#   print(i)
#   x <- readLines(myfifo, n=1)
#   print(x)
# }
# 
# test.pipe2 <- read.fwf(myfifo, width = c(4, 10, rep(11,11)))
# close(myfifo)
# unlink(fifoname)
# 
# x <- readLines(myfifo, n=1)
# 
# 
# 
# fd <- file("foo.Rmd", open = "wt")
# writeLines('first line', fd)
# writeLines('second line', fd)
# close(fd)
# 
# ENA <- as.matrix(dado[,2:13])
# processFile(filepath)
# 
# aa <- array(as.numeric(unlist(line)), dim=c(1, 12))
# as.matrix(line(aa))
# 
# mylist <- c(1, 2, 3, 4)
# 
# array(as.numeric(unlist(mylist)))#, dim=c(14, 5, 10))BBB[[4]] <- test.fixed
 
 
# Try checking the length of data returned by readBin:
#   
#   while (length(a <- readBin(f, 'int', n=1)) > 0) {
#     # do something
#   }
# 
# 
# # Tmp file
# fifoname <- "tmp.txt"
# myfifo <- file(fifoname, "w+")
# con <- file(filepath, "r")
# for (i in 1:10) {
#   writeLines( readLines(con, n=1), myfifo )
# }
# flush(myfifo)
# close(myfifo)
# myfifo = file(fifoname, "r")
# test.pipe <- read.fwf(myfifo, width = c(4, 10, rep(11,11)))
# 
# 
# 
# # Tmp stream (fifo)
# fifoname <- tempfile(fileext="-fifo")
# myfifo <- fifo(fifoname, "w+")
# con <- file("foo", "r")
# for (i in 1:2) {
#   writeLines( readLines(con, n=1), myfifo )
# }
# for (i in 1:20) {
#   print(i)
#   x <- readLines(myfifo, n=1)
#   print(x)
# }
# 
# test.pipe2 <- read.fwf(myfifo, width = c(4, 10, rep(11,11)))
# close(myfifo)
# unlink(fifoname)
# 
# x <- readLines(myfifo, n=1)
# 
# 
# 
# fd <- file("foo.Rmd", open = "wt")
# writeLines('first line', fd)
# writeLines('second line', fd)
# close(fd)
# 
# ENA <- as.matrix(dado[,2:13])
# processFile(filepath)
# 
# aa <- array(as.numeric(unlist(line)), dim=c(1, 12))
# as.matrix(line(aa))
# 
# mylist <- c(1, 2, 3, 4)
# 
# array(as.numeric(unlist(mylist)))#, dim=c(14, 5, 10))

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎