[R-br] Coordenadas e distâncias

Tito Conte tito.conte em gmail.com
Quinta Julho 11 12:17:13 BRT 2013


utilize um laço,
o comando for ou while  resolvem, dependendo do que você deseje fazer

Tito Conte



2013/7/8 Roberto Guevara <robertoguevara.bio em gmail.com>

> Olá pessoal do R-br.
>
> Meus dados consistem basicamente em coordenadas e o horário em que
> cada ponto foi obtido, como exemplificado a seguir:
>
> obs  dia  min    x    y
>   1    1    400  425 475
>   2    1    410  425 425
>   3    1 420 475 325
>   4    1 430 525 325
>   5    1    435  525 275
>   6    1    443  525 275
>
> obs se refere a cada unidade de amostra, dia a cada dia de coleta (um
> total de 73), min é o horário em unidades de minutos e x e y cada
> elemento do ponto cartesiano.
>
> O que preciso obter desses dados é a distribuição de distâncias
> euclidianas entre um ponto escolhido aleatoriamente e todos os pontos
> seguintes de um mesmo dia. Ou seja, preciso escolher aleatoriamente um
> ponto por dia, calcular, para todos os dias, a euclidiana entre este
> ponto e todos os pontos posteriores do mesmo dia e relacionar a
> distância espacial com a diferença de tempo entre os pontos e o dia em
> que cada distância está associada.
>
> Eu já elaborei um código pra isso. Caso tenham sugestões para melhorar
> o código, ficarei agradecido. Porém, não consigo passar para uma
> próxima etapa. Como poderia fazer para repetir esse procedimento o
> número de vezes que fosse necessário? Por exemplo, existem milhares de
> combinações de pontos escolhidos aleatoriamente ao longo dos 73 dias.
> Eu gostaria de repetir o procedimento 1000 vezes para ter uma ideia da
> variação de distribuição de distâncias que posso obter em decorrência
> da escolha aleatória de um ponto de origem por dia.
>
> Código já elaborado:
>
> arquivo<-read.table("arquivo.txt",head=T)
>
> fixo<-numeric() #vetor com origens de cada dia
> ult<-numeric()  #vetor com últimos pontos de cada dia
> xy<-list()      #lista para armazenar a "parte dos pontos de cada dia"
> delimitadas por fixo e ult
> hor<-list() #lista para armazenar a "parte dos horarios de cada dia"
> delimitadas por fixo e ult
> distancias<-list()#distancias euclidianas
> tempo<-list()#diferença de tempo entre os pontos
> dia<-list()#dia de coleta
> for (i in 1:max(unique(arquivo$dia))){  #repetindo até o total de dias
>         fixo[i]<-sample(arquivo$obs[arquivo$dia==i],1)#sorteio ponto de
> origem
>         ult[i]<-max(arquivo$obs[arquivo$dia==i])#armazenando último ponto
> de cada dia
>         xy[[i]]<-arquivo[fixo[i]:ult[i],4:5]#armazenando parte dos pontos
> de cada dia
>         hor[[i]]<-arquivo[fixo[i]:ult[i],6]#armazenando parte dos horários
> de cada dia
>         distancias[[i]]<-dist(xy[[i]])[1:nrow(xy[[i]])-1]#somente as
> distâncias em relação ao primeiro ponto interessam
>         tempo[[i]]<-dist(horarios[[i]])[1:length(horarios[[i]])-1]#somente
> diferenças ao primeiro ponto
>         dia[[i]]<-rep(i,length(arquivo$dia[fixo[i]:ult[i]])-1)$cada dia de
> coleta
>         }
>
> distancias<-unlist(distancias)
> tempo<-unlist(tempo)
> dia<-unlist(dia)
>
> dtd<-data.frame(distancias,tempo,dia)
>
> Este data.frame seria como uma unidade de amostra das milhares de
> distribuições que são possíveis de obter. Como otimizar para que
> qualquer número desejado não seja dispendioso de obter?
>
> Obrigado pela atenção
>
> --
> Roberto Guevara Ferreira Lima
>
> Biólogo - CRBio 6ª Região: 73146/06-D
> Mestre em Zoologia
> Laboratório de Ecologia e Zoologia de Vertebrados
> Instituto de Ciências Biológicas
> Universidade Federal do Pará
> Rua Augusto Corrêa, nº 01 - Bairro: Guamá. CEP: 66075-110
> Currículo Lattes: http://lattes.cnpq.br/7363382159007600
> _______________________________________________
> 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/20130711/69054e0a/attachment.html>


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