
Alexandre, Não precisa do n.parc... basta colocar for(k in 1:11). Veja que vc começou a ter resultados numéricos! O problema, então, deve estar no seu objeto "at". Verifique se ele é realmente um vetor numérico com "is.numeric(at)". Provavelmente, a resposta será "FALSE"... Corrija "at" e tudo ficará bem... :D S -----Mensagem Original----- From: ASANTOS Sent: Thursday, April 12, 2012 11:58 AM To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Problema em loop Sandro, Fiz o que você me sugeriu: n.parc<-1:11 for(k in 1:length(n.parc)){ at2<-as.numeric(at)/2^k mais como resultado tenho:
result V1 1 x 2 0.511524054475375 3 x 4 0.511524054475375 5 x 6 0.421325044234743 7 x 8 <NA> 9 x 10 <NA>
Vou tentar outra abordagem para obter o loop, Obrigado, Alexandre Em 12/04/2012 11:41, Sandro Sperandei escreveu:
Bem, se vc usar "at2<-at/2^k", com k variando de 1 até 11 e continuar dando NA é pq o seu "at" não está sendo encarado como numérico. Se tiver certeza de que ele é numérico, tente "at2<-as.numeric(at)/2^k". As vezes, colocamos números em um vetor, mas o R não reconhece como núero, especialmente quando o valor é parte de um objeto-resposta de uma função.
S
-----Mensagem Original----- From: ASANTOS Sent: Thursday, April 12, 2012 11:21 AM To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Problema em loop
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@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@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 _______________________________________________ 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.