<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>
Ahhhhhhhh!!!<br><br>Não vai funcionar mesmo, Alexandre...
hahahahaha!!!<br><br>Note que vc está dividindo at por 2^k e não dividindo at em
2^k partes <br>iguais... :D<br><br>experimente adaptar o script
abaixo:<br><br><br>---------------------------------<br>dados =
seq(1:4096)<br><br>for(k in 1:11){<br>
n=2^k<br> cv = c()<br> for(i in
1:n){<br> L =
length(dados)/n<br> cv[i] =
<br>sd(dados[((i-1)*L):(L*i)])/mean(dados[((i-1)*L):(L*i)])<br>
}<br><br><br><br>-------------------------------<br><br>S<br><br><br><br><br><br><div><div id="SkyDrivePlaceholder"></div>> Date: Thu, 12 Apr 2012 12:37:39 -0300<br>> From: alexandresantosbr@yahoo.com.br<br>> To: r-br@listas.c3sl.ufpr.br<br>> Subject: Re: [R-br] Problema em loop<br>> <br>> Sandro,<br>> <br>> Tentei fazer:<br>> <br>> res=NULL<br>> <br>> for(k in 1:11){<br>> <br>> at2<-at/2^k<br>> <br>> e no final da rotina<br>> <br>> res=rbind(res,c(k,cv2))<br>> <br>> Mesmo assim não funcionou, confirmei e a variável at é numérica.<br>> <br>> Obrigado,<br>> <br>> Alexandre<br>> <br>> Em 12/04/2012 12:17, Sandro Sperandei escreveu:<br>> > Alexandre,<br>> ><br>> > Não precisa do n.parc... basta colocar for(k in 1:11). Veja que vc <br>> > começou a ter resultados numéricos! O problema, então, deve estar no <br>> > seu objeto "at". Verifique se ele é realmente um vetor numérico com <br>> > "is.numeric(at)". Provavelmente, a resposta será "FALSE"... Corrija <br>> > "at" e tudo ficará bem... :D<br>> ><br>> > S<br>> ><br>> ><br>> ><br>> > -----Mensagem Original----- From: ASANTOS<br>> > Sent: Thursday, April 12, 2012 11:58 AM<br>> > To: r-br@listas.c3sl.ufpr.br<br>> > Subject: Re: [R-br] Problema em loop<br>> ><br>> > Sandro,<br>> ><br>> > Fiz o que você me sugeriu:<br>> ><br>> > n.parc<-1:11<br>> ><br>> > for(k in 1:length(n.parc)){<br>> ><br>> > at2<-as.numeric(at)/2^k<br>> ><br>> > mais como resultado tenho:<br>> ><br>> >> result<br>> > V1<br>> > 1 x<br>> > 2 0.511524054475375<br>> > 3 x<br>> > 4 0.511524054475375<br>> > 5 x<br>> > 6 0.421325044234743<br>> > 7 x<br>> > 8 <NA><br>> > 9 x<br>> > 10 <NA><br>> ><br>> > Vou tentar outra abordagem para obter o loop,<br>> ><br>> > Obrigado,<br>> ><br>> > Alexandre<br>> ><br>> ><br>> ><br>> ><br>> ><br>> > Em 12/04/2012 11:41, Sandro Sperandei escreveu:<br>> >> Bem, se vc usar "at2<-at/2^k", com k variando de 1 até 11 e continuar <br>> >> dando NA é pq o seu "at" não está sendo encarado como numérico. Se <br>> >> tiver certeza de que ele é numérico, tente "at2<-as.numeric(at)/2^k". <br>> >> As vezes, colocamos números em um vetor, mas o R não reconhece como <br>> >> núero, especialmente quando o valor é parte de um objeto-resposta de <br>> >> uma função.<br>> >><br>> >> S<br>> >><br>> >><br>> >><br>> >><br>> >> -----Mensagem Original----- From: ASANTOS<br>> >> Sent: Thursday, April 12, 2012 11:21 AM<br>> >> To: r-br@listas.c3sl.ufpr.br<br>> >> Subject: Re: [R-br] Problema em loop<br>> >><br>> >> Exatamente Sandro,<br>> >><br>> >> Pretendo utilizar essa variável em at2<-at/k e eu já tinha<br>> >> tentado sem sucesso at2<-at/n.parc[k], as duas alternativas eu tenho<br>> >> como resultado NA's.<br>> >><br>> >> Obrigado,<br>> >><br>> >> Alexandre<br>> >><br>> >> Em 12/04/2012 11:11, Sandro Sperandei escreveu:<br>> >>> Alexandre,<br>> >>><br>> >>> Olhei o algoritmo que vc enviou e, em momento algum, vi vc chamando <br>> >>> "n.parc" ou "n.parc[k]", a não ser nos limites do contador k. Pelo <br>> >>> que entendi, vc quer atribuir o valor 2, 4, 8, etc. a uma variável <br>> >>> que irá determinar o número de parcelas. Em que ponto você usa essa <br>> >>> variável? Seria em "at2<-at/k"?<br>> >>><br>> >>> S<br>> >>><br>> >>><br>> >>><br>> >>><br>> >>> -----Mensagem Original----- From: ASANTOS<br>> >>> Sent: Thursday, April 12, 2012 10:41 AM<br>> >>> To: r-br@listas.c3sl.ufpr.br<br>> >>> Subject: Re: [R-br] Problema em loop<br>> >>><br>> >>> Obrigado pela dica Sandro,<br>> >>><br>> >>> Mas não funcionou não.<br>> >>><br>> >>> Alexandre<br>> >>><br>> >>> Em 12/04/2012 10:31, Sandro Sperandei escreveu:<br>> >>>> Alexandre,<br>> >>>><br>> >>>> Notei que seu número de parcelas é sempre uma potência de 2. Correto?<br>> >>>><br>> >>>> Se for esse o caso, atribua á variável "número de parcelas" <br>> >>>> simplesmente o valor de 2^k.<br>> >>>><br>> >>>> Funcionou?<br>> >>>><br>> >>>> S<br>> >>>><br>> >>>><br>> >>>><br>> >>>> -----Mensagem Original----- From: ASANTOS<br>> >>>> Sent: Thursday, April 12, 2012 10:20 AM<br>> >>>> To: r-br@listas.c3sl.ufpr.br<br>> >>>> Subject: [R-br] Problema em loop<br>> >>>><br>> >>>> Bom dia pessoal,<br>> >>>><br>> >>>> Estou tentando dividir uma área em 2, 4, 8, 16, 32, 64, 128, 256,<br>> >>>> 512, 1024, e 2048, para tira o CV entre as parcelas e armazenar o<br>> >>>> resultado em write.table(cv2, file ="area1.mod", <br>> >>>> row.names=F,append=T).<br>> >>>> Bom, estou conseguindo calcular um a um, mais eu gostaria de <br>> >>>> otimizar e<br>> >>>> fazer um loop em um vetor que especifica o número de parcelas, como <br>> >>>> em:<br>> >>>><br>> >>>> n.parc<-c(2,4,8,16,32,64,128,256,512,1024,2048)##Número de parcelas<br>> >>>><br>> >>>> for(k in 1:length(n.parc))<br>> >>>><br>> >>>> mas não sei porque razão não estou conseguindo fazer esse loop, já<br>> >>>> tentei com n.parc e n.parc[k] e nada, segue a minha rotina completa:<br>> >>>><br>> >>>> ####Divisão em 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 parcelas<br>> >>>><br>> >>>> n.parc<-c(2,4,8,16,32,64,128,256,512,1024,2048)##Número de parcelas<br>> >>>><br>> >>>> for(k in 1:length(n.parc)){<br>> >>>><br>> >>>> at2<-at/k<br>> >>>> parc2<-round(sqrt(at2))<br>> >>>> N_S=seq(p0[1], by=parc2, length.out=10)##Define o centro das parcelas<br>> >>>> L_O=seq(p0[2],by=parc2, length.out=10)<br>> >>>> grid0 <- expand.grid(N_S=seq(p0[1], by=parc2, length.out=2),<br>> >>>> L_O=seq(p0[2],by=parc2, length.out=2))#transformar em área essas <br>> >>>> medidas<br>> >>>> do centro de parcela<br>> >>>> grid=GridTopology(c(304404, 6468774), c(parc2,parc2), c(10,10))<br>> >>>> grid=SpatialGrid(grid=grid)<br>> >>>> plot(grid)<br>> >>>> points(ninhos)<br>> >>>> lines(limite)<br>> >>>> ##Passando para objetos da classe Spatial<br>> >>>> #Pontos<br>> >>>> pontos <- SpatialPoints(cbind(ninhos$x,ninhos$y))<br>> >>>> pontos<- SpatialPoints(list(ninhos$x,ninhos$y))<br>> >>>> pontos<- SpatialPoints(data.frame(ninhos$x,ninhos$y))<br>> >>>><br>> >>>> ##Limite da área<br>> >>>> borda=SpatialPolygons(list(Polygons(list(Polygon(limite)),"limite")))<br>> >>>> ##Plotando<br>> >>>> plot(borda)#borda<br>> >>>> points(pontos,col='grey')#Pontos<br>> >>>> lines(grid,col='blue')#Malha<br>> >>>> #remover o que esta fora do limite<br>> >>>> fullgrid(grid)=FALSE<br>> >>>> clip<-overlay(grid,borda)##Jogando o limite sobre a malha<br>> >>>> sel.grid <-grid[!is.na(clip),]##Retirando os NA's que correspondem a<br>> >>>> malha fora do limite<br>> >>>> points(sel.grid, col='blue')#ver o resultado final grafico<br>> >>>> class(sel.grid) ## SpatialPixels<br>> >>>> ap3 <- as.SpatialPolygons.SpatialPixels(sel.grid)<br>> >>>> table(over(pontos, ap3)) ##Frequencia em cada parcela<br>> >>>> z<-table(over(pontos, ap3)) #contar quantos pontos tem em cada parcela<br>> >>>> z<-as.data.frame(z) #formato somente com colunas validas<br>> >>>> cc<- SpatialPoints(cbind(grid0$N_S,grid0$L_O))#<br>> >>>> cc<- SpatialPoints(list(grid0$N_S,grid0$L_O))<br>> >>>> cc<- SpatialPoints(data.frame(grid0$N_S,grid0$L_O))<br>> >>>> clip2<-overlay(cc,ap3)<br>> >>>> sel.cc<-cc[!is.na(clip2),]#seleção de pontos que nao estao dentro <br>> >>>> da area<br>> >>>> #criar matriz nula<br>> >>>> coords<-NULL#matriz sem valor para criar os pontos<br>> >>>> coords<-sel.cc[1:length(sel.cc)] #numero para cada parcela, ate o <br>> >>>> final<br>> >>>> do comprimento do vetor<br>> >>>> coords<-as.data.frame(coords)#transformar em data frame<br>> >>>> Var1<-1:length(sel.cc)#criar novo objeto para comparação, <br>> >>>> referenciando<br>> >>>> a coordenada do centroide<br>> >>>> coords<-cbind(coords,Var1) #Var1= numero das parcelas<br>> >>>> myList <- list(coords, z)#tabela com qtdade dentro de coords e de z<br>> >>>> final<-merge(coords, z, by.x='Var1', by.y='Var1', all.x=TRUE,<br>> >>>> all.y=TRUE)#comando para mostrar os NA para krigagem ordinal(limitação<br>> >>>> do software, não mostra as parcelas que tem 0 ninhos)<br>> >>>> final<-final[,-1]#não precisa da 1a coluna<br>> >>>> cv2<-sqrt(var(final$Freq))/mean(final$Freq)<br>> >>>> write.table(cv2, file ="area1.mod", row.names=F,append=T)<br>> >>>> result=read.table("area1.mod",header=F)<br>> >>>> }<br>> >>>> ##########################################################<br>> >>>><br>> >>>><br>> >>>> Alguém poderia me dar uma help,<br>> >>>><br>> >>>> Obrigado,<br>> >>>><br>> >>><br>> >>><br>> >><br>> >><br>> ><br>> ><br>> <br>> <br>> -- <br>> Alexandre dos Santos<br>> Engenheiro Florestal, Dr.<br>> Universidade Federal de Lavras<br>> Departamento de Entomologia<br>> Laboratório de Entomologia Florestal<br>> Caixa Postal 3037<br>> 37200-000 - Lavras/MG<br>> Fone: +55 (35) 9223-0304<br>> <br>> _______________________________________________<br>> R-br mailing list<br>> R-br@listas.c3sl.ufpr.br<br>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br<br>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.<br></div> </div></body>
</html>