utilize um laço, o comando for ou while resolvem, dependendo do que você deseje fazer
Tito Conte 2013/7/8 Roberto Guevara <robertoguevara....@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@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.