[R-br] Manipulação matriz com laço

Michelle Bau Graczyk mbgraczyk em gmail.com
Segunda Março 30 12:25:40 BRT 2015


Oi Éder,

me desculpe pela demora em responder!
Muito obrigada pela ajuda! Deu certo!



Em 27 de março de 2015 00:16, Éder Comunello <comunello.eder em gmail.com>
escreveu:

> Boa noite,
>
> Acho que é possível simplificar com o uso de scale()...
>
> ### <code r>
> x <- as.matrix(c(10.373173554, 6.125265914, 3.148949951, 2.722401273,
> 2.045041946,
> 1.498078581, 1.35012278, 1.33545711, 1.190051106, 0.999610112,
> 0.850212256, 0.716720583, 0.600704889, 0.474433269, 0.431826856,
> 0.388576986, 0.266709936, 0.176960029, 0.045935755, 0.02012691,
> -0.003897135, -0.030136936, -0.074815367, -0.14541063, -0.294553778,
> -0.453450244, -0.551343912, -0.710794973, -1.222537293, -1.273419528))
>
> ### Similar ao utilizado no código inicial
> raiz <- sqrt(sum(x^2))
> scale(x, center=FALSE, scale=raiz)
>
> ### Para valores entre 0 e 1
> scale(x-min(x), center=FALSE, scale=max(x)-min(x))
> ### </code>
>
> Éder Comunello <c <comunello.eder em gmail.com>omunello.eder em gmail.com>
> Dourados, MS - [22 16.5'S, 54 49'W]
>
> Em 26 de março de 2015 21:01, Michelle Bau Graczyk <mbgraczyk em gmail.com>
> escreveu:
>
>> Boa noite,
>>
>> Eu estou normalizando autovetores de uma matriz e colocando eles em
>> outra. Para isso eu montei o programa a seguir. A primeira forma, ele só
>> calcula o ultimo elemento da coluna 4 da matriz, e da segunda forma os
>> valores do resultado estão errados.
>> Primeira forma:
>> > a<-read.table("/Users/bau/Documents/Mestrado/teste/eigen1.txt",
>> header=TRUE)
>>
>> > b<-as.matrix(a)
>> > matriznorm<-matrix(0,30,4)
>> > matriznorm[,1]<-b[,1]# só vou usar este valores do arquivo acima
>> > show(matriznorm[,1])
>>  [1] 10.373173554  6.125265914  3.148949951  2.722401273  2.045041946
>>  1.498078581  1.350122780
>>  [8]  1.335457110  1.190051106  0.999610112  0.850212256  0.716720583
>>  0.600704889  0.474433269
>> [15]  0.431826856  0.388576986  0.266709936  0.176960029  0.045935755
>>  0.020126910 -0.003897135
>> [22] -0.030136936 -0.074815367 -0.145410630 -0.294553778 -0.453450244
>> -0.551343912 -0.710794973
>> [29] -1.222537293 -1.273419528
>> > for( i in 1:30){
>> +   matriznorm[i,2]<-matriznorm[i,1]*matriznorm[i,1]
>> + }
>> >
>> > somaQuadrados<-sum(matriznorm[,2])
>> > raiz<-sqrt(somaQuadrados)
>> > matriznorm[,3]<-raiz
>> >
>> >  for(j in i:30){
>> +    matriznorm[j,4]<-matriznorm[j,1]/raiz
>> +  }
>> >
>> >
>> write.table(matriznorm,"/Users/bau/Documents/Mestrado/teste/eigenValuesNorm1.txt")
>> > show(matriznorm)
>>               [,1]         [,2]     [,3]        [,4]
>>  [1,] 10.373173554 1.076027e+02 13.46876  0.00000000
>>  [2,]  6.125265914 3.751888e+01 13.46876  0.00000000
>>  [3,]  3.148949951 9.915886e+00 13.46876  0.00000000
>>  [4,]  2.722401273 7.411469e+00 13.46876  0.00000000
>>  [5,]  2.045041946 4.182197e+00 13.46876  0.00000000
>>  [6,]  1.498078581 2.244239e+00 13.46876  0.00000000
>>  [7,]  1.350122780 1.822832e+00 13.46876  0.00000000
>>  [8,]  1.335457110 1.783446e+00 13.46876  0.00000000
>>  [9,]  1.190051106 1.416222e+00 13.46876  0.00000000
>> [10,]  0.999610112 9.992204e-01 13.46876  0.00000000
>> [11,]  0.850212256 7.228609e-01 13.46876  0.00000000
>> [12,]  0.716720583 5.136884e-01 13.46876  0.00000000
>> [13,]  0.600704889 3.608464e-01 13.46876  0.00000000
>> [14,]  0.474433269 2.250869e-01 13.46876  0.00000000
>> [15,]  0.431826856 1.864744e-01 13.46876  0.00000000
>> [16,]  0.388576986 1.509921e-01 13.46876  0.00000000
>> [17,]  0.266709936 7.113419e-02 13.46876  0.00000000
>> [18,]  0.176960029 3.131485e-02 13.46876  0.00000000
>> [19,]  0.045935755 2.110094e-03 13.46876  0.00000000
>> [20,]  0.020126910 4.050925e-04 13.46876  0.00000000
>> [21,] -0.003897135 1.518766e-05 13.46876  0.00000000
>> [22,] -0.030136936 9.082349e-04 13.46876  0.00000000
>> [23,] -0.074815367 5.597339e-03 13.46876  0.00000000
>> [24,] -0.145410630 2.114425e-02 13.46876  0.00000000
>> [25,] -0.294553778 8.676193e-02 13.46876  0.00000000
>> [26,] -0.453450244 2.056171e-01 13.46876  0.00000000
>> [27,] -0.551343912 3.039801e-01 13.46876  0.00000000
>> [28,] -0.710794973 5.052295e-01 13.46876  0.00000000
>> [29,] -1.222537293 1.494597e+00 13.46876  0.00000000
>> [30,] -1.273419528 1.621597e+00 13.46876 -0.09454616
>> >
>> Da segunda forma:
>> > a<-read.table("/Users/bau/Documents/Mestrado/teste/eigen1.txt",
>> header=TRUE)
>> > b<-as.matrix(a)
>> > matriznorm<-matrix(0,30,4)
>> > matriznorm[,1]<-b[,1]
>> > show(matriznorm[,1])
>>  [1] 10.373173554  6.125265914  3.148949951  2.722401273  2.045041946
>>  1.498078581  1.350122780
>>  [8]  1.335457110  1.190051106  0.999610112  0.850212256  0.716720583
>>  0.600704889  0.474433269
>> [15]  0.431826856  0.388576986  0.266709936  0.176960029  0.045935755
>>  0.020126910 -0.003897135
>> [22] -0.030136936 -0.074815367 -0.145410630 -0.294553778 -0.453450244
>> -0.551343912 -0.710794973
>> [29] -1.222537293 -1.273419528
>> > for( i in 1:30){
>> +   matriznorm[i,2]<-matriznorm[i,1]*matriznorm[i,1]
>> +
>> + somaQuadrados<-sum(matriznorm[,2])
>> + raiz<-sqrt(somaQuadrados)
>> + matriznorm[,3]<-raiz
>> +
>> +  for(j in i:30){
>> +    matriznorm[j,4]<-matriznorm[j,1]/raiz
>> +  }
>> + }
>> >
>> write.table(matriznorm,"/Users/bau/Documents/Mestrado/teste/eigenValuesNorm1.txt")
>> > show(matriznorm)
>>               [,1]         [,2]     [,3]          [,4]
>>  [1,] 10.373173554 1.076027e+02 13.46876  1.0000000000
>>  [2,]  6.125265914 3.751888e+01 13.46876  0.5084624670
>>  [3,]  3.148949951 9.915886e+00 13.46876  0.2528991576
>>  [4,]  2.722401273 7.411469e+00 13.46876  0.2135962692
>>  [5,]  2.045041946 4.182197e+00 13.46876  0.1584251428
>>  [6,]  1.498078581 2.244239e+00 13.46876  0.1152793173
>>  [7,]  1.350122780 1.822832e+00 13.46876  0.1033376904
>>  [8,]  1.335457110 1.783446e+00 13.46876  0.1016853664
>>  [9,]  1.190051106 1.416222e+00 13.46876  0.0902440218
>> [10,]  0.999610112 9.992204e-01 13.46876  0.0755856426
>> [11,]  0.850212256 7.228609e-01 13.46876  0.0641564605
>> [12,]  0.716720583 5.136884e-01 13.46876  0.0540043425
>> [13,]  0.600704889 3.608464e-01 13.46876  0.0452163558
>> [14,]  0.474433269 2.250869e-01 13.46876  0.0356888678
>> [15,]  0.431826856 1.864744e-01 13.46876  0.0324667092
>> [16,]  0.388576986 1.509921e-01 13.46876  0.0292025272
>> [17,]  0.266709936 7.113419e-02 13.46876  0.0200398900
>> [18,]  0.176960029 3.131485e-02 13.46876  0.0132951406
>> [19,]  0.045935755 2.110094e-03 13.46876  0.0034511674
>> [20,]  0.020126910 4.050925e-04 13.46876  0.0015121392
>> [21,] -0.003897135 1.518766e-05 13.46876 -0.0002927926
>> [22,] -0.030136936 9.082349e-04 13.46876 -0.0022641887
>> [23,] -0.074815367 5.597339e-03 13.46876 -0.0056207917
>> [24,] -0.145410630 2.114425e-02 13.46876 -0.0109238800
>> [25,] -0.294553778 8.676193e-02 13.46876 -0.0221227473
>> [26,] -0.453450244 2.056171e-01 13.46876 -0.0340370871
>> [27,] -0.551343912 3.039801e-01 13.46876 -0.0413498303
>> [28,] -0.710794973 5.052295e-01 13.46876 -0.0532327969
>> [29,] -1.222537293 1.494597e+00 13.46876 -0.0911767942
>> [30,] -1.273419528 1.621597e+00 13.46876 -0.0945461625
>>
>> Muito obrigada!
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20150330/75c89b68/attachment.html>


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