Comando for em cadeia

Olá, eu talvez não tenha sido claro no assunto do e-mail, mas na minha concepção o problema é este: um comando for dentro de outro. Eu estou trabalhando com a seguinte matriz: [,1] [,2] [,3] [,4] [,5][1,] 20 5 11 7 49[2,] 18 9 10 2 45[3,] 11 35 30 15 7[4,] 10 3 7 4 26 E a partir desta eu gostaria de gerar outra matriz com a seguinte configuração: [,1] [,2] [,3] [,4] [,5][1,] dv11 dv12 dv13 dv14 dv15[2,] - dv22 dv23 dv24 dv25[3,] - - dv33 dv34 dv35[4,] - - - dv44 dv45[5,] - - - - dv55 Para achar os devidos valores, eu criei a seguinte função:read.csv2("C:/multivar.csv",header=T) multivar<-read.csv2("C:/multivar.csv",header=T) attach(multivar) ##Criar DV11: vetor1<-NULL for(i in 1:4) { vetor1[i]<-(multivar[i,1]-multivar[i,1])^2 } dv11<-(sum(vetor1)^0.5) rm(vetor1) ##Criar DV12: vetor1<-NULL for(i in 1:4) { vetor1[i]<-(multivar[i,1]-multivar[i,2])^2 } dv12<-(sum(vetor1)^0.5) rm(vetor1) E assim sucessivamente. Minha dúvida: Há a possibilidade de criar um comando "for" para os valores de dv serem criados automaticamente, ao invés de gerar um de cada vez, manualmente?

Guilherme, Nada te impede de aninhar laços for(). O que você chama de dvv? Qual o resultado numérico dessa sua implementação? att, FH 2012/9/17 Guilherme Heiden <guilhermeheiden@hotmail.com>
Olá, eu talvez não tenha sido claro no assunto do e-mail, mas na minha concepção o problema é este: um comando for dentro de outro.
Eu estou trabalhando com a seguinte matriz:
[,1] [,2] [,3] [,4] [,5] [1,] 20 5 11 7 49 [2,] 18 9 10 2 45 [3,] 11 35 30 15 7 [4,] 10 3 7 4 26
E a partir desta eu gostaria de gerar outra matriz com a seguinte configuração:
[,1] [,2] [,3] [,4] [,5] [1,] dv11 dv12 dv13 dv14 dv15 [2,] - dv22 dv23 dv24 dv25 [3,] - - dv33 dv34 dv35 [4,] - - - dv44 dv45 [5,] - - - - dv55
*Para achar os devidos valores, eu criei a seguinte função:* read.csv2("C:/multivar.csv",header=T)
multivar<-read.csv2("C:/multivar.csv",header=T)
attach(multivar)
*##Criar DV11:*
vetor1<-NULL
for(i in 1:4) {
vetor1[i]<-(multivar[i,1]-multivar[i,1])^2
}
dv11<-(sum(vetor1)^0.5)
rm(vetor1)
*##Criar DV12:*
vetor1<-NULL
for(i in 1:4) {
vetor1[i]<-(multivar[i,1]-multivar[i,2])^2
}
dv12<-(sum(vetor1)^0.5)
rm(vetor1)
E assim sucessivamente.
*Minha dúvida: *
*Há a possibilidade de criar um comando "for" para os valores de dv serem criados automaticamente, ao invés de gerar um de cada vez, manualmente?*
* *
* *
_______________________________________________ R-br mailing list R-br@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.

FH, eu recebi a tua resposta com os caracteres alterados, não consegui entender a tua resposta e ainda não conheço esse comando. Mas o resultado do cálculo é o seguinte: [,1] [,2] [,3] [,4] [,5][1,] dv11 dv12 dv13 dv14 dv15[2,] - dv22 dv23 dv24 dv25[3,] - - dv33 dv34 dv35[4,] - - - dv44 dv45[5,] - - - - dv55 [,1] [,2] [,3] [,4] [,5][1,] 0.0 30.5 22.7 21.8 42.9[2,] - 0.0 8.8 21.3 67.4[3,] - - 0.0 12.7 59.7[4,] - - - 0.0 64.5[5,] - - - - 0.0 Mas por exemplo, dv12 é: dv12=((5-20)^2+(9-18)^2+(35-11)^2+(3-10)^2)^(1/2)=30,5Esse comando todo é o primeiro passo para uma matriz euclidiana, em que estou tirando os valores das distâncias das variáveis entre elas. Estou começando a programar para o método do vizinho mais próximo ou encadeamento único. Desde já, muito obrigado!att,Guilherme Date: Mon, 17 Sep 2012 10:07:26 -0300 From: fernandohtoledo@gmail.com To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Comando for em cadeia Guilherme, Nada te impede de aninhar laþos for(). O que vocÛ chama de dvv? Qual o resultado numÚrico dessa sua implementaþÒo? att,FH 2012/9/17 Guilherme Heiden <guilhermeheiden@hotmail.com> Olß, eu talvez nÒo tenha sido claro no assunto do e-mail, mas na minha concepþÒo o problema Ú este: um comando for dentro de outro. Eu estou trabalhando com a seguinte matriz: á á á[,1] [,2] [,3] [,4] [,5][1,] á 20 á á5 á 11 á á7 á 49[2,] á 18 á á9 á 10 á á2 á 45[3,] á 11 á 35 á 30 á 15 á á7[4,] á 10 á á3 á á7 á á4 á 26 E a partir desta eu gostaria de gerar outra matriz com a seguinte configuraþÒo: á á á[,1] á á á[,2] á á [,3] á á[,4] á á[,5][1,] dv11 á dv12 á dv13 ádv14 á ádv15 [2,] á - á á ádv22 á dv23 á dv24 á ádv25[3,] á - á á á á- á á á dv33 á dv34 á dv35[4,] á - á á á á- á á á á- á á á dv44 á ádv45[5,] á- á á á á- á á á á - á á á á - á á á dv55 Para achar os devidos valores, eu criei a seguinte funþÒo:read.csv2("C:/multivar.csv",header=T) multivar<-read.csv2("C:/multivar.csv",header=T) áattach(multivar) á ##Criar DV11: vetor1<-NULL áfor(i in 1:4) { ávetor1[i]<-(multivar[i,1]-multivar[i,1])^2 á} dv11<-(sum(vetor1)^0.5) rm(vetor1) á ##Criar DV12: vetor1<-NULL for(i in 1:4) { vetor1[i]<-(multivar[i,1]-multivar[i,2])^2 } dv12<-(sum(vetor1)^0.5) rm(vetor1) E assim sucessivamente.á Minha d·vida:áHß a possibilidade de criar um comando "for" para os valores de dv serem criados automaticamente, ao invÚs de gerar um de cada vez, manualmente? _______________________________________________ R-br mailing list R-br@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@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.

Pelo que eu entendi do teu código, aninhando 3 for () tu consegue o que tu quer: n <- 4 dv <- matrix(0,n,n) multivar <- matrix(rnorm(1000),ncol=4) vector <- rep(0,4) for (i in 1:n) { for (j in i:n) { for (k in 1:n) { vector[k] <- (multivar[k,i]-multivar[k,j])^2 } dv[i,j] <- dv[j,i] <- sqrt(sum(vector)) } } Da pra criar em variaveis separadas (dv11, dv12, dv13...) usando o assign(), mas acho que em matriz é mais util pra ti. 2012/9/17 Guilherme Heiden <guilhermeheiden@hotmail.com>
FH, eu recebi a tua resposta com os caracteres alterados, não consegui entender a tua resposta e ainda não conheço esse comando. Mas o resultado do cálculo é o seguinte:
[,1] [,2] [,3] [,4] [,5] [1,] dv11 dv12 dv13 dv14 dv15 [2,] - dv22 dv23 dv24 dv25 [3,] - - dv33 dv34 dv35 [4,] - - - dv44 dv45 [5,] - - - - dv55
[,1] [,2] [,3] [,4] [,5] [1,] 0.0 30.5 22.7 21.8 42.9 [2,] - 0.0 8.8 21.3 67.4 [3,] - - 0.0 12.7 59.7 [4,] - - - 0.0 64.5 [5,] - - - - 0.0
Mas por exemplo, dv12 é: dv12=((5-20)^2+(9-18)^2+(35-11)^2+(3-10)^2)^(1/2)=30,5 Esse comando todo é o primeiro passo para uma matriz euclidiana, em que estou tirando os valores das distâncias das variáveis entre elas. Estou começando a programar para o método do vizinho mais próximo ou encadeamento único.
Desde já, muito obrigado! att, Guilherme
------------------------------ Date: Mon, 17 Sep 2012 10:07:26 -0300 From: fernandohtoledo@gmail.com To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Comando for em cadeia
Guilherme,
Nada te impede de aninhar laþos for(). O que vocÛ chama de dvv?
Qual o resultado numÚrico dessa sua implementaþÒo?
att, FH
2012/9/17 Guilherme Heiden <guilhermeheiden@hotmail.com>
Olß, eu talvez nÒo tenha sido claro no assunto do e-mail, mas na minha concepþÒo o problema Ú este: um comando for dentro de outro.
Eu estou trabalhando com a seguinte matriz:
á á á[,1] [,2] [,3] [,4] [,5] [1,] á 20 á á5 á 11 á á7 á 49 [2,] á 18 á á9 á 10 á á2 á 45 [3,] á 11 á 35 á 30 á 15 á á7 [4,] á 10 á á3 á á7 á á4 á 26
E a partir desta eu gostaria de gerar outra matriz com a seguinte configuraþÒo:
á á á[,1] á á á[,2] á á [,3] á á[,4] á á[,5] [1,] dv11 á dv12 á dv13 ádv14 á ádv15 [2,] á - á á ádv22 á dv23 á dv24 á ádv25 [3,] á - á á á á- á á á dv33 á dv34 á dv35 [4,] á - á á á á- á á á á- á á á dv44 á ádv45 [5,] á- á á á á- á á á á - á á á á - á á á dv55
*Para achar os devidos valores, eu criei a seguinte funþÒo:* read.csv2("C:/multivar.csv",header=T) multivar<-read.csv2("C:/multivar.csv",header=T) áattach(multivar) á *##Criar DV11:* vetor1<-NULL áfor(i in 1:4) { ávetor1[i]<-(multivar[i,1]-multivar[i,1])^2 á} dv11<-(sum(vetor1)^0.5) rm(vetor1)
á *##Criar DV12:* vetor1<-NULL for(i in 1:4) { vetor1[i]<-(multivar[i,1]-multivar[i,2])^2 } dv12<-(sum(vetor1)^0.5) rm(vetor1)
E assim sucessivamente.á
*Minha d·vida:á* *Hß a possibilidade de criar um comando "for" para os valores de dv serem criados automaticamente, ao invÚs de gerar um de cada vez, manualmente?* * * * *
_______________________________________________ R-br mailing list R-br@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@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@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.

Eaí Rodrigo! Muito obrigado pela parte de aninhar o for(). Me é bastante útil. Se tu pudesse me ajudar em mais um detalhe seria de grande valia.. Eu estou trabalhando com a seguinte matriz: [,1] [,2] [,3] [,4] [,5][1,] 20 5 11 7 49[2,] 18 9 10 2 45[3,] 11 35 30 15 7[4,] 10 3 7 4 26 Então, no material que eu estou seguindo o sujeito entrega uma matriz quadrada (5x5) com os seguintes valores como resultado: [,1] [,2] [,3] [,4] [,5][1,] 0.0 30.5 22.7 21.8 42.9[2,] - 0.0 8.8 21.3 67.4[3,] - - 0.0 12.7 59.7[4,] - - - 0.0 64.5[5,] - - - - 0.0 A função para tal resultado, por exemplo no caso do 30.5 seria: dv12=((5-20)^2+(9-18)^2+(35-11)^2+(3-10)^2)^(1/2)=30,5E assim sucessivamente. O comando que tu me fizesse não entrega tal matriz. Ele me entregou uma matriz 4x5, com os seguintes valores: [,1] [,2] [,3] [,4][1,] 0.000000 1.403864 1.814820 2.088134[2,] 1.403864 0.000000 2.599762 1.771693[3,] 1.814820 2.599762 0.000000 3.112440[4,] 2.088134 1.771693 3.112440 0.000000 Tu saberia/poderia me dizer porque? Ou me dizer pelo menos quais alterações precisam ser feitas no código que tu me mandasse para eu obter aqueles valores de distância e uma matriz 5x5? Desculpa se estou parecendo preguiçoso, mas realmente ainda não saquei tudo do R e não pude visualizar o erro, mas a tua ajuda já me deu outra visão. Grande abraço!Date: Mon, 17 Sep 2012 10:57:38 -0300 From: rcoster@gmail.com To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Comando for em cadeia Pelo que eu entendi do teu código, aninhando 3 for () tu consegue o que tu quer: n <- 4dv <- matrix(0,n,n)multivar <- matrix(rnorm(1000),ncol=4)vector <- rep(0,4) for (i in 1:n) { for (j in i:n) { for (k in 1:n) { vector[k] <- (multivar[k,i]-multivar[k,j])^2 } dv[i,j] <- dv[j,i] <- sqrt(sum(vector)) }} Da pra criar em variaveis separadas (dv11, dv12, dv13...) usando o assign(), mas acho que em matriz é mais util pra ti. 2012/9/17 Guilherme Heiden <guilhermeheiden@hotmail.com> FH, eu recebi a tua resposta com os caracteres alterados, não consegui entender a tua resposta e ainda não conheço esse comando. Mas o resultado do cálculo é o seguinte: [,1] [,2] [,3] [,4] [,5][1,] dv11 dv12 dv13 dv14 dv15 [2,] - dv22 dv23 dv24 dv25[3,] - - dv33 dv34 dv35 [4,] - - - dv44 dv45[5,] - - - - dv55 [,1] [,2] [,3] [,4] [,5] [1,] 0.0 30.5 22.7 21.8 42.9[2,] - 0.0 8.8 21.3 67.4 [3,] - - 0.0 12.7 59.7[4,] - - - 0.0 64.5 [5,] - - - - 0.0 Mas por exemplo, dv12 é: dv12=((5-20)^2+(9-18)^2+(35-11)^2+(3-10)^2)^(1/2)=30,5 Esse comando todo é o primeiro passo para uma matriz euclidiana, em que estou tirando os valores das distâncias das variáveis entre elas. Estou começando a programar para o método do vizinho mais próximo ou encadeamento único. Desde já, muito obrigado! att,Guilherme Date: Mon, 17 Sep 2012 10:07:26 -0300 From: fernandohtoledo@gmail.com To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Comando for em cadeia Guilherme, Nada te impede de aninhar laþos for(). O que vocÛ chama de dvv? Qual o resultado numÚrico dessa sua implementaþÒo? att,FH 2012/9/17 Guilherme Heiden <guilhermeheiden@hotmail.com> Olß, eu talvez nÒo tenha sido claro no assunto do e-mail, mas na minha concepþÒo o problema Ú este: um comando for dentro de outro. Eu estou trabalhando com a seguinte matriz: á á á[,1] [,2] [,3] [,4] [,5][1,] á 20 á á5 á 11 á á7 á 49[2,] á 18 á á9 á 10 á á2 á 45[3,] á 11 á 35 á 30 á 15 á á7[4,] á 10 á á3 á á7 á á4 á 26 E a partir desta eu gostaria de gerar outra matriz com a seguinte configuraþÒo: á á á[,1] á á á[,2] á á [,3] á á[,4] á á[,5][1,] dv11 á dv12 á dv13 ádv14 á ádv15 [2,] á - á á ádv22 á dv23 á dv24 á ádv25[3,] á - á á á á- á á á dv33 á dv34 á dv35[4,] á - á á á á- á á á á- á á á dv44 á ádv45[5,] á- á á á á- á á á á - á á á á - á á á dv55 Para achar os devidos valores, eu criei a seguinte funþÒo:read.csv2("C:/multivar.csv",header=T) multivar<-read.csv2("C:/multivar.csv",header=T) áattach(multivar) á ##Criar DV11: vetor1<-NULL áfor(i in 1:4) { ávetor1[i]<-(multivar[i,1]-multivar[i,1])^2 á} dv11<-(sum(vetor1)^0.5) rm(vetor1) á ##Criar DV12: vetor1<-NULL for(i in 1:4) { vetor1[i]<-(multivar[i,1]-multivar[i,2])^2 } dv12<-(sum(vetor1)^0.5) rm(vetor1) E assim sucessivamente.á Minha d·vida:á Hß a possibilidade de criar um comando "for" para os valores de dv serem criados automaticamente, ao invÚs de gerar um de cada vez, manualmente? _______________________________________________ R-br mailing list R-br@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@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@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@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.

É que o codigo que mandei simula uma multivar e nao usa a tua... e eu também tinha entendido errado teu problema, aqui vai um que faz o que tu pediu, baseado na tua multivar n <- ncol(multivar) dv <- matrix(0,n,n) for (i in 1:n) { for (j in i:n) { dv[i,j] <- dv[j,i] <- sum((multivar[,i]-multivar[,j])^2)^.5 } } 2012/9/17 Guilherme Heiden <guilhermeheiden@hotmail.com>
Eaí Rodrigo! Muito obrigado pela parte de aninhar o for(). Me é bastante útil. Se tu pudesse me ajudar em mais um detalhe seria de grande valia..
Eu estou trabalhando com a seguinte matriz:
[,1] [,2] [,3] [,4] [,5]
[1,] 20 5 11 7 49
[2,] 18 9 10 2 45
[3,] 11 35 30 15 7
[4,] 10 3 7 4 26
Então, no material que eu estou seguindo o sujeito entrega uma matriz quadrada (5x5) com os seguintes valores como resultado:
[,1] [,2] [,3] [,4] [,5] [1,] 0.0 30.5 22.7 21.8 42.9 [2,] - 0.0 8.8 21.3 67.4 [3,] - - 0.0 12.7 59.7 [4,] - - - 0.0 64.5 [5,] - - - - 0.0
A função para tal resultado, por exemplo no caso do 30.5 seria: dv12=((5-20)^2+(9-18)^2+(35-11)^2+(3-10)^2)^(1/2)=30,5 E assim sucessivamente.
O comando que tu me fizesse não entrega tal matriz. Ele me entregou uma matriz 4x5, com os seguintes valores:
[,1] [,2] [,3] [,4] [1,] 0.000000 1.403864 1.814820 2.088134 [2,] 1.403864 0.000000 2.599762 1.771693 [3,] 1.814820 2.599762 0.000000 3.112440 [4,] 2.088134 1.771693 3.112440 0.000000
Tu saberia/poderia me dizer porque? Ou me dizer pelo menos quais alterações precisam ser feitas no código que tu me mandasse para eu obter aqueles valores de distância e uma matriz 5x5? Desculpa se estou parecendo preguiçoso, mas realmente ainda não saquei tudo do R e não pude visualizar o erro, mas a tua ajuda já me deu outra visão.
Grande abraço! ------------------------------ Date: Mon, 17 Sep 2012 10:57:38 -0300 From: rcoster@gmail.com
To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Comando for em cadeia
Pelo que eu entendi do teu código, aninhando 3 for () tu consegue o que tu quer:
n <- 4 dv <- matrix(0,n,n) multivar <- matrix(rnorm(1000),ncol=4) vector <- rep(0,4) for (i in 1:n) { for (j in i:n) { for (k in 1:n) { vector[k] <- (multivar[k,i]-multivar[k,j])^2 } dv[i,j] <- dv[j,i] <- sqrt(sum(vector)) } }
Da pra criar em variaveis separadas (dv11, dv12, dv13...) usando o assign(), mas acho que em matriz é mais util pra ti.
2012/9/17 Guilherme Heiden <guilhermeheiden@hotmail.com>
FH, eu recebi a tua resposta com os caracteres alterados, não consegui entender a tua resposta e ainda não conheço esse comando. Mas o resultado do cálculo é o seguinte:
[,1] [,2] [,3] [,4] [,5] [1,] dv11 dv12 dv13 dv14 dv15 [2,] - dv22 dv23 dv24 dv25 [3,] - - dv33 dv34 dv35 [4,] - - - dv44 dv45 [5,] - - - - dv55
[,1] [,2] [,3] [,4] [,5] [1,] 0.0 30.5 22.7 21.8 42.9 [2,] - 0.0 8.8 21.3 67.4 [3,] - - 0.0 12.7 59.7 [4,] - - - 0.0 64.5 [5,] - - - - 0.0
Mas por exemplo, dv12 é: dv12=((5-20)^2+(9-18)^2+(35-11)^2+(3-10)^2)^(1/2)=30,5 Esse comando todo é o primeiro passo para uma matriz euclidiana, em que estou tirando os valores das distâncias das variáveis entre elas. Estou começando a programar para o método do vizinho mais próximo ou encadeamento único.
Desde já, muito obrigado! att, Guilherme
------------------------------ Date: Mon, 17 Sep 2012 10:07:26 -0300 From: fernandohtoledo@gmail.com To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Comando for em cadeia
Guilherme,
Nada te impede de aninhar laþos for(). O que vocÛ chama de dvv?
Qual o resultado numÚrico dessa sua implementaþÒo?
att, FH
2012/9/17 Guilherme Heiden <guilhermeheiden@hotmail.com>
Olß, eu talvez nÒo tenha sido claro no assunto do e-mail, mas na minha concepþÒo o problema Ú este: um comando for dentro de outro.
Eu estou trabalhando com a seguinte matriz:
á á á[,1] [,2] [,3] [,4] [,5] [1,] á 20 á á5 á 11 á á7 á 49 [2,] á 18 á á9 á 10 á á2 á 45 [3,] á 11 á 35 á 30 á 15 á á7 [4,] á 10 á á3 á á7 á á4 á 26
E a partir desta eu gostaria de gerar outra matriz com a seguinte configuraþÒo:
á á á[,1] á á á[,2] á á [,3] á á[,4] á á[,5] [1,] dv11 á dv12 á dv13 ádv14 á ádv15 [2,] á - á á ádv22 á dv23 á dv24 á ádv25 [3,] á - á á á á- á á á dv33 á dv34 á dv35 [4,] á - á á á á- á á á á- á á á dv44 á ádv45 [5,] á- á á á á- á á á á - á á á á - á á á dv55
*Para achar os devidos valores, eu criei a seguinte funþÒo:* read.csv2("C:/multivar.csv",header=T) multivar<-read.csv2("C:/multivar.csv",header=T) áattach(multivar) á *##Criar DV11:* vetor1<-NULL áfor(i in 1:4) { ávetor1[i]<-(multivar[i,1]-multivar[i,1])^2 á} dv11<-(sum(vetor1)^0.5) rm(vetor1)
á *##Criar DV12:* vetor1<-NULL for(i in 1:4) { vetor1[i]<-(multivar[i,1]-multivar[i,2])^2 } dv12<-(sum(vetor1)^0.5) rm(vetor1)
E assim sucessivamente.á
*Minha d·vida:á* *Hß a possibilidade de criar um comando "for" para os valores de dv serem criados automaticamente, ao invÚs de gerar um de cada vez, manualmente?* * * * *
_______________________________________________ R-br mailing list R-br@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@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@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@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@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.

Nossa cara, um milhão de obrigados. Não tens ideia do quão útil foi a tua ajuda. Acabei de perceber que na criação do meu dv eu estava pecando ao usar apenas o [i] e não o [i,j]. Espero em breve poder retribuir à comunidade. Grande abraço, Guilherme Heiden Date: Mon, 17 Sep 2012 11:26:58 -0300 From: rcoster@gmail.com To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Comando for em cadeia É que o codigo que mandei simula uma multivar e nao usa a tua... e eu também tinha entendido errado teu problema, aqui vai um que faz o que tu pediu, baseado na tua multivar n <- ncol(multivar) dv <- matrix(0,n,n)for (i in 1:n) { for (j in i:n) { dv[i,j] <- dv[j,i] <- sum((multivar[,i]-multivar[,j])^2)^.5 }} 2012/9/17 Guilherme Heiden <guilhermeheiden@hotmail.com> Eaí Rodrigo! Muito obrigado pela parte de aninhar o for(). Me é bastante útil. Se tu pudesse me ajudar em mais um detalhe seria de grande valia.. Eu estou trabalhando com a seguinte matriz: [,1] [,2] [,3] [,4] [,5][1,] 20 5 11 7 49[2,] 18 9 10 2 45 [3,] 11 35 30 15 7[4,] 10 3 7 4 26 Então, no material que eu estou seguindo o sujeito entrega uma matriz quadrada (5x5) com os seguintes valores como resultado: [,1] [,2] [,3] [,4] [,5][1,] 0.0 30.5 22.7 21.8 42.9 [2,] - 0.0 8.8 21.3 67.4[3,] - - 0.0 12.7 59.7 [4,] - - - 0.0 64.5[5,] - - - - 0.0 A função para tal resultado, por exemplo no caso do 30.5 seria: dv12=((5-20)^2+(9-18)^2+(35-11)^2+(3-10)^2)^(1/2)=30,5 E assim sucessivamente. O comando que tu me fizesse não entrega tal matriz. Ele me entregou uma matriz 4x5, com os seguintes valores: [,1] [,2] [,3] [,4][1,] 0.000000 1.403864 1.814820 2.088134 [2,] 1.403864 0.000000 2.599762 1.771693[3,] 1.814820 2.599762 0.000000 3.112440[4,] 2.088134 1.771693 3.112440 0.000000 Tu saberia/poderia me dizer porque? Ou me dizer pelo menos quais alterações precisam ser feitas no código que tu me mandasse para eu obter aqueles valores de distância e uma matriz 5x5? Desculpa se estou parecendo preguiçoso, mas realmente ainda não saquei tudo do R e não pude visualizar o erro, mas a tua ajuda já me deu outra visão. Grande abraço!Date: Mon, 17 Sep 2012 10:57:38 -0300 From: rcoster@gmail.com To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Comando for em cadeia Pelo que eu entendi do teu código, aninhando 3 for () tu consegue o que tu quer: n <- 4dv <- matrix(0,n,n)multivar <- matrix(rnorm(1000),ncol=4) vector <- rep(0,4) for (i in 1:n) { for (j in i:n) { for (k in 1:n) { vector[k] <- (multivar[k,i]-multivar[k,j])^2 } dv[i,j] <- dv[j,i] <- sqrt(sum(vector)) }} Da pra criar em variaveis separadas (dv11, dv12, dv13...) usando o assign(), mas acho que em matriz é mais util pra ti. 2012/9/17 Guilherme Heiden <guilhermeheiden@hotmail.com> FH, eu recebi a tua resposta com os caracteres alterados, não consegui entender a tua resposta e ainda não conheço esse comando. Mas o resultado do cálculo é o seguinte: [,1] [,2] [,3] [,4] [,5][1,] dv11 dv12 dv13 dv14 dv15 [2,] - dv22 dv23 dv24 dv25[3,] - - dv33 dv34 dv35 [4,] - - - dv44 dv45[5,] - - - - dv55 [,1] [,2] [,3] [,4] [,5] [1,] 0.0 30.5 22.7 21.8 42.9[2,] - 0.0 8.8 21.3 67.4 [3,] - - 0.0 12.7 59.7[4,] - - - 0.0 64.5 [5,] - - - - 0.0 Mas por exemplo, dv12 é: dv12=((5-20)^2+(9-18)^2+(35-11)^2+(3-10)^2)^(1/2)=30,5 Esse comando todo é o primeiro passo para uma matriz euclidiana, em que estou tirando os valores das distâncias das variáveis entre elas. Estou começando a programar para o método do vizinho mais próximo ou encadeamento único. Desde já, muito obrigado! att,Guilherme Date: Mon, 17 Sep 2012 10:07:26 -0300 From: fernandohtoledo@gmail.com To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Comando for em cadeia Guilherme, Nada te impede de aninhar laþos for(). O que vocÛ chama de dvv? Qual o resultado numÚrico dessa sua implementaþÒo? att,FH 2012/9/17 Guilherme Heiden <guilhermeheiden@hotmail.com> Olß, eu talvez nÒo tenha sido claro no assunto do e-mail, mas na minha concepþÒo o problema Ú este: um comando for dentro de outro. Eu estou trabalhando com a seguinte matriz: á á á[,1] [,2] [,3] [,4] [,5][1,] á 20 á á5 á 11 á á7 á 49[2,] á 18 á á9 á 10 á á2 á 45[3,] á 11 á 35 á 30 á 15 á á7[4,] á 10 á á3 á á7 á á4 á 26 E a partir desta eu gostaria de gerar outra matriz com a seguinte configuraþÒo: á á á[,1] á á á[,2] á á [,3] á á[,4] á á[,5][1,] dv11 á dv12 á dv13 ádv14 á ádv15 [2,] á - á á ádv22 á dv23 á dv24 á ádv25[3,] á - á á á á- á á á dv33 á dv34 á dv35[4,] á - á á á á- á á á á- á á á dv44 á ádv45[5,] á- á á á á- á á á á - á á á á - á á á dv55 Para achar os devidos valores, eu criei a seguinte funþÒo:read.csv2("C:/multivar.csv",header=T) multivar<-read.csv2("C:/multivar.csv",header=T) áattach(multivar) á ##Criar DV11: vetor1<-NULL áfor(i in 1:4) { ávetor1[i]<-(multivar[i,1]-multivar[i,1])^2 á} dv11<-(sum(vetor1)^0.5) rm(vetor1) á ##Criar DV12: vetor1<-NULL for(i in 1:4) { vetor1[i]<-(multivar[i,1]-multivar[i,2])^2 } dv12<-(sum(vetor1)^0.5) rm(vetor1) E assim sucessivamente.á Minha d·vida:á Hß a possibilidade de criar um comando "for" para os valores de dv serem criados automaticamente, ao invÚs de gerar um de cada vez, manualmente? _______________________________________________ R-br mailing list R-br@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@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@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@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@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@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.
participantes (3)
-
FHRB Toledo
-
Guilherme Heiden
-
Rodrigo Coster