<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Boa Sandro!!!!!!!!!!!!!!!!<br>
<br>
Funcionou, um grande obrigado,<br>
<br>
Minha adaptação foi:<br>
<br>
####Divisão em 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048
parcelas<br>
res<-NULL<br>
for(k in 1:11){<br>
n=2^k<br>
for(i in 1:n){<br>
at2<-at/n<br>
parc2<-round(sqrt(at2))<br>
N_S=seq(p0[1], by=parc2, length.out=100)##Define o centro das
parcelas<br>
L_O=seq(p0[2],by=parc2, length.out=100)<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
medidas do centro de parcela<br>
grid=GridTopology(c(304404, 6468774), c(parc2,parc2), c(100,100))<br>
grid=SpatialGrid(grid=grid)<br>
<br>
##Passando para objetos da classe Spatial<br>
#Pontos<br>
pontos <- SpatialPoints(cbind(ninhos$x,ninhos$y))#cbind-junta
duas colunas em uma, no caso as coordenadas<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>
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 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>
cv2<-sqrt(var(z$Freq))/mean(z$Freq)<br>
res=rbind(res,c(n,cv2))<br>
}}<br>
#<br>
Abraço,<br>
<br>
Alexandre<br>
<br>
<br>
Em 12/04/2012 17:24, Sandro Sperandei escreveu:
<blockquote cite="mid:COL112-W45E08B50FAB19DEBB1A670CF3A0@phx.gbl"
type="cite">
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
<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>> Date: Thu, 12 Apr 2012 12:37:39 -0300<br>
> From: <a class="moz-txt-link-abbreviated" href="mailto:alexandresantosbr@yahoo.com.br">alexandresantosbr@yahoo.com.br</a><br>
> To: <a class="moz-txt-link-abbreviated" href="mailto:r-br@listas.c3sl.ufpr.br">r-br@listas.c3sl.ufpr.br</a><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: <a class="moz-txt-link-abbreviated" href="mailto:r-br@listas.c3sl.ufpr.br">r-br@listas.c3sl.ufpr.br</a><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: <a class="moz-txt-link-abbreviated" href="mailto:r-br@listas.c3sl.ufpr.br">r-br@listas.c3sl.ufpr.br</a><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: <a class="moz-txt-link-abbreviated" href="mailto:r-br@listas.c3sl.ufpr.br">r-br@listas.c3sl.ufpr.br</a><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: <a class="moz-txt-link-abbreviated" href="mailto:r-br@listas.c3sl.ufpr.br">r-br@listas.c3sl.ufpr.br</a><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>
> <a class="moz-txt-link-abbreviated" href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
> <a class="moz-txt-link-freetext" href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
> Leia o guia de postagem
(<a class="moz-txt-link-freetext" href="http://www.leg.ufpr.br/r-br-guia">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo
reproduzível.<br>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
R-br mailing list
<a class="moz-txt-link-abbreviated" href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a>
<a class="moz-txt-link-freetext" href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a>
Leia o guia de postagem (<a class="moz-txt-link-freetext" href="http://www.leg.ufpr.br/r-br-guia">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.</pre>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">--
Alexandre dos Santos
Engenheiro Florestal, Dr.
Universidade Federal de Lavras
Departamento de Entomologia
Laboratório de Entomologia Florestal
Caixa Postal 3037
37200-000 - Lavras/MG
Fone: +55 (35) 9223-0304 </pre>
</body>
</html>