Não foi possível enviar o arquivo. Será algum problema com as permissões?
Diferenças

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão Ambos lados da revisão seguinte
cursos:mct:exemplo1b [2011/05/26 22:11]
paulojus
cursos:mct:exemplo1b [2011/05/26 23:21]
paulojus
Linha 88: Linha 88:
 foo3 <- sapply(foo1,​ function(x) as.numeric(x[2])) foo3 <- sapply(foo1,​ function(x) as.numeric(x[2]))
 foo3 foo3
-foo3[is.na(foo3)] <- 0 +COLS <- !is.na(foo3) 
-foo3 +COLS 
-as.data.frame(sweep(data.matrix(foo),​ 2, 10^foo3, FUN="/"​))+ 
 +sweep(data.matrix(foo[,​COLS]),​ 2, 10^foo3[COLS],​ FUN="/"​) 
 +foo[,COLS] <- sweep(data.matrix(foo[,COLS]), 2, 10^foo3[COLS], FUN="/"​) 
 +foo
 </​code> ​ </​code> ​
  
Linha 100: Linha 103:
 Agora vamos montar uma função que concatena os comandos acima para facilitar a leitura de arquivos deste tipo sempre que preciso. Agora vamos montar uma função que concatena os comandos acima para facilitar a leitura de arquivos deste tipo sempre que preciso.
 <code R> <code R>
-read.meudado <- function(file,​ formato){+read.meudado <- function(file,​ formato, ...){
        ​lformato <- strsplit(formato,​ split=","​)        ​lformato <- strsplit(formato,​ split=","​)
        ​ncampos <- sapply(lformato,​ function(x) sum(as.numeric(x)))        ​ncampos <- sapply(lformato,​ function(x) sum(as.numeric(x)))
-       arq <- read.fwf(file,​ width=ncampos)+       arq <- read.fwf(file,​ width=ncampos, ...)
        ​decimais <- sapply(lformato,​ function(x) as.numeric(x[2]))        ​decimais <- sapply(lformato,​ function(x) as.numeric(x[2]))
-    decimais[is.na(decimais)] <- 0 +    COLS <- !is.na(decimais)  
-       arq <- as.data.frame(sweep(data.matrix(arq),​ 2, 10^decimais,​ FUN="/"​))+       arq[,​COLS] ​<- sweep(data.matrix(arq[,COLS, drop=F]), 2, 10^decimais[COLS], FUN="/"​)
     ​return(arq)     ​return(arq)
-    }+}
  
 read.meudado("​dados/​exFWF.txt",​ formato = DEC) read.meudado("​dados/​exFWF.txt",​ formato = DEC)
 </​code>​ </​code>​
  
-Limitações da função acima (que podem ser generalizadas...) +Outro exemplo, os dados abaixo no arquivo ''​exFWF-2.txt'',​ com campos alfanuméricos no arquivo. 
-  assume que todos os campos são numericos +<​code>​ 
-  ao final armazena todos os campos ​como numeric ​(double)+ ​12005AA12345627 
 + ​11002BB27372912 
 + ​10003BB12034115 
 + ​09004CC14732112 
 +</​code>​  
 + 
 +<code R> 
 +read.fwf("​exFWF-2.txt",​ wid=c(2,​3,​2,​6,​2)
 + 
 +DEC1 <c("​2",​ "​3",​ "​2",​ "​4,​2",​ "​1,​1"​) 
 +read.meudado("​exFWF-2.txt",​ formato = DEC1) 
 +</​code>​ 
 + 
 +Outro exemplo, ​os dados abaixo no arquivo ''​exFWF-3.txt'',​ com campos ​alfanuméricos no arquivo e linhas a serem ignoradas. 
 +<​code>​ 
 + Dados no formato FWF 
 + ​Exemplo do curso 
 + ​12005AA12345627 
 + ​11002BB27372912 
 + ​10003BB12034115 
 + ​09004CC14732112 
 +</​code>​ 
 + 
 +Lendo com a função, note o uso do mecanismo de ''​...''​ para passar argumentos para ''​read.fwf()''​ 
 + 
 +<code R> 
 +read.meudado("​dados/​exFWF-3.txt",​ formato = DEC1, skip=2) 
 +</​code>​
  
  

QR Code
QR Code cursos:mct:exemplo1b (generated for current page)