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

Michelle Bau Graczyk mbgraczyk em gmail.com
Quinta Março 26 22:01:58 BRT 2015


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!
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20150326/c2c5411e/attachment.html>


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