[R-br] Problema em loop

ASANTOS alexandresantosbr em yahoo.com.br
Quinta Abril 12 11:21:22 BRT 2012


Exatamente Sandro,

       Pretendo utilizar essa variável em at2<-at/k e eu já tinha 
tentado sem sucesso at2<-at/n.parc[k], as duas alternativas eu tenho 
como resultado NA's.

Obrigado,

Alexandre

Em 12/04/2012 11:11, Sandro Sperandei escreveu:
> Alexandre,
>
> Olhei o algoritmo que vc enviou e, em momento algum, vi vc chamando 
> "n.parc" ou "n.parc[k]", a não ser nos limites do contador k. Pelo que 
> entendi, vc quer atribuir o valor 2, 4, 8, etc. a uma variável que irá 
> determinar o número de parcelas. Em que ponto você usa essa variável? 
> Seria em "at2<-at/k"?
>
> S
>
>
>
>
> -----Mensagem Original----- From: ASANTOS
> Sent: Thursday, April 12, 2012 10:41 AM
> To: r-br em listas.c3sl.ufpr.br
> Subject: Re: [R-br] Problema em loop
>
> Obrigado pela dica Sandro,
>
>        Mas não funcionou não.
>
> Alexandre
>
> Em 12/04/2012 10:31, Sandro Sperandei escreveu:
>> Alexandre,
>>
>> Notei que seu número de parcelas é sempre uma potência de 2. Correto?
>>
>> Se for esse o caso, atribua á variável "número de parcelas" 
>> simplesmente o valor de 2^k.
>>
>> Funcionou?
>>
>> S
>>
>>
>>
>> -----Mensagem Original----- From: ASANTOS
>> Sent: Thursday, April 12, 2012 10:20 AM
>> To: r-br em listas.c3sl.ufpr.br
>> Subject: [R-br] Problema em loop
>>
>> Bom dia pessoal,
>>
>>      Estou tentando dividir uma área em 2, 4, 8, 16, 32, 64, 128, 256,
>> 512, 1024, e 2048, para tira o CV entre as parcelas e armazenar o
>> resultado em write.table(cv2, file ="area1.mod", row.names=F,append=T).
>> Bom, estou conseguindo calcular um a um, mais eu gostaria de otimizar  e
>> fazer um loop em um vetor que especifica o número de parcelas, como em:
>>
>> n.parc<-c(2,4,8,16,32,64,128,256,512,1024,2048)##Número de parcelas
>>
>> for(k in 1:length(n.parc))
>>
>> mas não sei porque razão não estou conseguindo fazer esse loop, já
>> tentei com n.parc e n.parc[k] e nada, segue a minha rotina completa:
>>
>> ####Divisão em 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 parcelas
>>
>> n.parc<-c(2,4,8,16,32,64,128,256,512,1024,2048)##Número de parcelas
>>
>> for(k in 1:length(n.parc)){
>>
>> at2<-at/k
>> parc2<-round(sqrt(at2))
>> N_S=seq(p0[1], by=parc2, length.out=10)##Define o centro das parcelas
>> L_O=seq(p0[2],by=parc2, length.out=10)
>> grid0 <- expand.grid(N_S=seq(p0[1], by=parc2, length.out=2),
>> L_O=seq(p0[2],by=parc2, length.out=2))#transformar em área essas medidas
>> do centro de parcela
>> grid=GridTopology(c(304404,  6468774), c(parc2,parc2), c(10,10))
>> grid=SpatialGrid(grid=grid)
>> plot(grid)
>> points(ninhos)
>> lines(limite)
>> ##Passando para objetos da classe Spatial
>> #Pontos
>> pontos <- SpatialPoints(cbind(ninhos$x,ninhos$y))
>> pontos<- SpatialPoints(list(ninhos$x,ninhos$y))
>> pontos<- SpatialPoints(data.frame(ninhos$x,ninhos$y))
>>
>> ##Limite da área
>> borda=SpatialPolygons(list(Polygons(list(Polygon(limite)),"limite")))
>> ##Plotando
>> plot(borda)#borda
>> points(pontos,col='grey')#Pontos
>> lines(grid,col='blue')#Malha
>> #remover o que esta fora do limite
>> fullgrid(grid)=FALSE
>> clip<-overlay(grid,borda)##Jogando o limite sobre a malha
>> sel.grid <-grid[!is.na(clip),]##Retirando os NA's que correspondem a
>> malha fora do limite
>> points(sel.grid, col='blue')#ver o resultado final grafico
>> class(sel.grid)  ## SpatialPixels
>> ap3 <- as.SpatialPolygons.SpatialPixels(sel.grid)
>> table(over(pontos, ap3)) ##Frequencia em cada parcela
>> z<-table(over(pontos, ap3)) #contar quantos pontos tem em cada parcela
>> z<-as.data.frame(z) #formato somente com colunas validas
>> cc<- SpatialPoints(cbind(grid0$N_S,grid0$L_O))#
>> cc<- SpatialPoints(list(grid0$N_S,grid0$L_O))
>> cc<- SpatialPoints(data.frame(grid0$N_S,grid0$L_O))
>> clip2<-overlay(cc,ap3)
>> sel.cc<-cc[!is.na(clip2),]#seleção de pontos que nao estao dentro da 
>> area
>> #criar matriz nula
>> coords<-NULL#matriz sem valor para criar os pontos
>> coords<-sel.cc[1:length(sel.cc)] #numero para cada parcela, ate o final
>> do comprimento do vetor
>> coords<-as.data.frame(coords)#transformar em data frame
>> Var1<-1:length(sel.cc)#criar novo objeto para comparação, referenciando
>> a coordenada do centroide
>> coords<-cbind(coords,Var1) #Var1= numero das parcelas
>> myList <- list(coords, z)#tabela com qtdade dentro de coords e de z
>> final<-merge(coords, z, by.x='Var1', by.y='Var1', all.x=TRUE,
>> all.y=TRUE)#comando para mostrar os NA para krigagem ordinal(limitação
>> do software, não mostra as parcelas que tem 0 ninhos)
>> final<-final[,-1]#não precisa da 1a coluna
>> cv2<-sqrt(var(final$Freq))/mean(final$Freq)
>> write.table(cv2, file ="area1.mod", row.names=F,append=T)
>> result=read.table("area1.mod",header=F)
>> }
>> ##########################################################
>>
>>
>> Alguém poderia me dar uma help,
>>
>> Obrigado,
>>
>
>


-- 
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



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