Hola Alejandro,

Supongamos que los 19 archivos de texto que contienen las matrices se
encuentran en el directorio "alejandro/matrices".  Intenta algo como lo
siguiente:

setwd("alejandro/matrices")
f <- list.files(patter = ".txt")   # contiene los nombres de los txt files
info <- lapply(f, read.table)   # lee todos los archivos
res <- lapply(info, function(x) x / rowSums(x))  # operacion sobre cada
matriz

Para obtener la informacion de la 5ta matriz, solo debes hacer

res[[5]]

Si quieres exportar las nuevas matrices solo debes hacer

sapply(1:length(res), function(i)
write.table(res[[i]], paste0("nueva", f[i]), col.names = TRUE, row.names =
TRUE, sep = "\t", quote = FALSE))

En "alejandro/matrices" deben aparecer 19 archivos txt nuevos que comienzan
con el nombre "nueva".

Saludos,
Jorge.-


2013/2/7 Alejandro Ayala <>

> Estimados.
>
> Su gentil ayuda con el siguiente problema:
>
> Tengo un total de 19 matrices en archivos de texto de dimensión (32x32) ,
> necesito que para cada fila de cada matriz se realice una operación
> especifica: La división entre cada componente y la suma correspondiente a
> la fila de la matriz en la que se este trabajando.
>
> El codigo que he utilizado es el siguiente:
>
> # creación de una matriz de dimensión 32x32 donde se va a almacenar los
> datos de la operación requerida
> for (i in 1:19)
> {
>   mat.i<-paste("mat",i,sep="")
>   assign(mat.i,matrix(0,32,32))
>   data.matrix(mat.i)
> }
>
> # asignación a la nueva matriz de la operación requerida
> #para la matriz 1
> for (i in 1:32){
>   isup.i<-paste("isup",i,sep="")
>   if (sum(matriz1[i,])==0)
>     mat1[i,]=0
>   else
>
>
> mat1[i,]<-assign(isup.i,as.vector(matriz1[i,]/sum(matriz1[i,]),mode="numeric"))
>     }}
>
>
> # para la matriz 2
> for (i in 1:32){
>   isup.i<-paste("isup",i,sep="")
>   if (sum(matriz2[i,])==0)
>     mat2[i,]=0
>   else
>
>
> mat2[i,]<-assign(isup.i,as.vector(matriz2[i,]/sum(matriz2[i,]),mode="numeric"))
>     }}
>
> Esa operación tengo que extenderla a las 19 matrices, es decir tengo que
> crear un iterador sobre otro iterador, he intentado varias cosas pero con
> resultados negativos.
>
> He intentado con este código pero al poner una cuarta condición el paquete
> R me arroja el siguiente Error: tentativa de aplicar una no-función
>
> for (i in 1:32){
>   isup.i<-paste("isup",i,sep="")
>   if ((sum(matriz1[i,])==0) | (sum(matriz2[i,])==0) |
> (sum(matriz3[i,])==0)){
>     mat1[i,]=0
>     mat2[i,]=0
>     mat3[i,]=0
> }
>   else {
>
>
> mat1[i,]<-assign(isup.i,as.vector(matriz1[i,]/sum(matriz1[i,]),mode="numeric"))
>
>
> mat2[i,]<-assign(isup.i,as.vector(matriz2[i,]/sum(matriz2[i,]),mode="numeric"))
>
>
> mat3[i,]<-assign(isup.i,as.vector(matriz3[i,]/sum(matriz3[i,]),mode="numeric"))
>    }}
>
> De antemano muchisimas gracias por la ayuda
>
>         [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>

	[[alternative HTML version deleted]]

