[R-br] Automatizar leitura de arquivos e converter nome em colunas

ASANTOS alexandresantosbr em yahoo.com.br
Terça Julho 8 14:17:43 BRT 2014


Boa tarde pessoal,

         Tenho inúmeros arquivos dpt que podem ser lidos com txt e 
gostaria de fazer o seguinte, ler os dados que são apenas uma coluna em 
cada arquivo e transpor eles, em seguida, pegar o nome do arquivo e a 
cada _ criar uma nova coluna, sendo um arquivo:

Cupim%20Syntermes_COLONIA%201_operario_1_c1_140616.dpt

Gostaria que a última coluna fosse os dados transpostos no arquivo e as 
colunas fosse: Cupim%20Syntermes, COLONIA%20, operario, 1, c1 e 140616.

Segue CRM com três arquivos:


#-------------------------------------------------------------------------------
### Download a partir de uma lista de links com os arquivos
#-------------------------------------------------------------------------------
#
### Obtenção de links
links <- c(
"https://www.dropbox.com/s/l5ofrqw01tnfmmv/Cupim%20Syntermes_COLONIA%201_operario_1_c1_140616.dpt", 

"https://www.dropbox.com/s/tkxkov16z813oc6/Cupim%20Syntermes_COLONIA%201_operario_2_c1_140616.dpt", 

"https://www.dropbox.com/s/hjcmw9qutwwolo0/Cupim%20Syntermes_COLONIA%201_operario_3_c1_140616.dpt")

tokens    <- gsub("^.*/s/","",dirname(links))
fileNames <- basename(links)
newLinks  <- file.path("http://dl.dropbox.com/s", tokens, fileNames); 
newLinks

for (a in newLinks) {
           tryCatch(download.file(a, dest=basename(a), mode='wb'),
                               error=function(...) print("Falha no 
download!"))}

### Verificando arquivos baixados corretamente
##############################################################################
fileInfo  <- file.info(fileNames); fileInfo ### observe o segundo arquivo
files.OK  <- fileNames[fileInfo$size>0 & !is.na(fileInfo$size)]; files.OK

### Operando arquivos baixados corretamente
##############################################################################
for (b in files.OK) {
           t       <- strsplit(b,"_|\\.")[[1]][2]
           XYZ     <- data.frame(rep(t),t(b[b[,1],]))
           outName <- paste0('XYZ-', t, '.txt')
           write.table(XYZ, file ="termiteNIR.mod", row.names=F,append=T)
           message(noquote(paste(outName, "salvo em", getwd())))
}
#</code>



-- 
======================================================================
Alexandre dos Santos
Proteção Florestal
IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso
Campus Cáceres
Caixa Postal 244
Avenida dos Ramires, s/n
Bairro: Distrito Industrial
Cáceres - MT                      CEP: 78.200-000
Fone: (+55) 65 8132-8112 (TIM)   (+55) 65 9686-6970 (VIVO)
e-mails:alexandresantosbr em yahoo.com.br
         alexandre.santos em cas.ifmt.edu.br
Lattes: http://lattes.cnpq.br/1360403201088680
======================================================================



Mais detalhes sobre a lista de discussão R-br