[R-br] Função - agrupamento de grupos

Luciano F. Sgarbi luciano.f.sgarbi em gmail.com
Sexta Junho 15 15:49:49 BRT 2012


#olá pessoal,
#Estou querendo montar uma função que me mostre pontos que estão á uma
distância menor que uma pré-estabelecida.

#o script e explicações seguem abaixo:

############################
##Conjunto de dados para testar
a<-rep(c(1,4),each=4)
b<-c(1,2,4,5,1,2,4,5)
cc<-c("p1","p2","p3","p4","p5","p6","p7","p8")
mat<-data.frame(cc,a,b)
rownames(mat)<-cc
coord<-mat[,c(2,3)]
plot(coord,pch="",xlim=c(0,6),ylim=c(0,6));text(coord[,"a"],coord[,"b"],rownames(coord))#esse
é o meu conjunto de pontos.
#note que se eu for juntar os pontos que estão a uma distância menor ou
igual á dois, formarei dois grupos.
#um formado pelos pontos: p1, p2, p3  e p4 e, outro grupo com os pontos p5,
p6, p7 e p8
####################

##iniciando os cálculos de distância
library(vegan)
(mat.dist<-vegdist(coord,"euclidean"))#calculo de distância entre os pontos
resu.col1<-numeric(0)
resu.col2<-numeric(0)
(distancias<-as.numeric(mat.dist))
locais<-rownames(coord)
n.linhas<-nrow(coord)

##Agora vou criar uma tabela para comparar as distâncias par-a-par
 for(i in 2:n.linhas){
linhas<-c(i:n.linhas)
resu.col2<-c(resu.col2,locais[linhas])
 resu.col1<-c(resu.col1,rep(locais[i-1],length(linhas)))
}
(mat.resu<-data.frame(resu.col1,resu.col2,distancias))#tabela com as
distâncias par-a-par
dist.corte<-2##argumentos usado para estabelecer distância para juntar
pontos
(min.dists<-mat.resu[which(mat.resu[,"distancias"]<=dist.corte),])##tabela
com todos os pontos que estão a uma distância menor, entre si, que á pré
estabelecida.
#note que se for juntando os pontos forma-se dois grupos
#   resu.col1 resu.col2 distancias
*#1         p1        p2          1#p1 com  p2*
*#8         p2        p3          2#o p2 que estava juntado com o p1
junta-se ao p3*
*#14        p3        p4          1**#o p3 que estava juntado com o p2
junta-se ao p4*
*#23        p5        p6          1#idem*
*#26        p6        p7          2*
*#28        p7        p8          1*

########################################
*#Alguém, por favor, sabe me dizer como de agora em diante eu faço para
saber quais que são os pontos que formam cada um dos grupos?*

Atenciosamente,
Luciano
-- 

Luciano F. Sgarbi

Mestrando em Ecologia e Evolução - UFG

Laboratório de Ecologia de Insetos

Cel. (62)8174-2262   Lab. (62)3521-1732
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120615/7c51f6b4/attachment.html>


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