[R-br] Removendo pontos dentro de um grid - RESOLVIDO

Alexandre dos Santos alexandresantosbr em yahoo.com.br
Sexta Abril 22 15:16:05 BRT 2011


Gustavo,
    Deço desculpas, quando fui utilizar seu exemplo, eu estava trocando as
malhas, deu certo sim,
Muito Obrigado,
Abraço,
Alexandre

-----Original Message-----
From: r-br-bounces em listas.c3sl.ufpr.br
[mailto:r-br-bounces em listas.c3sl.ufpr.br] On Behalf Of Gustavo Henrique de
Carvalho
Sent: sexta-feira, 22 de abril de 2011 13:21
To: r-br em listas.c3sl.ufpr.br
Subject: Re: [R-br] Removendo pontos dentro de um grid

Bom, não entendi então. Do jeito que eu mandei ele tira as linhas 2, 4, 6,
...

head(malha10[(malha10$xp - p0[1]) %% 20 == 0 & (malha10$yp - p0[2]) %%
20 == 0,])

Para controlar as distâncias, basta mudar o divisor:

30 x 10m:

head(malha10[(malha10$xp - p0[1]) %% 30 == 0 & (malha10$yp - p0[2]) %%
10 == 0,], n = 20)

Abraços,

Gustavo.

2011/4/22 Alexandre dos Santos <alexandresantosbr em yahoo.com.br>:
> Obrigado Prof.Paulo, Ivan e Gustavo,
>
>     Mais não é bem isso ainda, na verdade eu tenho uma matriz de
> coordenadas xp e yp, mas usando o exemplo anterior ainda para explicar
> melhor,
> Com uma matriz de pontos equidistantes em 10 metros, sendo,
>> head(malha10)
>  xp yp
> 1 15 15
> 2 25 15
> 3 35 15
> 4 45 15
> 5 55 15
> 6 65 15
>     Quero agora utilizar somente as coordenadas que estão equidistantes em
> 20 metros, então no meu novo objeto malha20, eu não teria as linhas 2, 4 e
6
> do exemplo anterior. Estou tentando estabelecer uma rotina, pois tenho
> vários bancos de dados e vou reorganizar em, por exemplo, para as
> coordenadas 10x20metros, 20x20m, 20x30m, e assim por diante, estou
tentando
> fazer algo como:
>
> malha20<-malha10
>  if(malha20[malha20$xp[2]-malha20$xp[1]<20,]) {malha20[malha20$xp[2]=0,]}
>  if(malha20[malha20$yp[2]-malha20$yp[1]<20,]) {malha20[malha20$yp[2]=0,]}
> malha20<-malha20[malha20$xp!=0 & malha20$yp!=0]
>
>        Mais minha ignorância em programação não esta me termitindo
> selecionar corretamente os elementos da linha dentro da coluna, mais
quando
> faço para as duas primeiras linhas da primeira coluna, como :
> if(malha20$xp[2]-malha20$xp[1]<20) {malha20$xp[2]=0}
> Funciona,
> Obrigado ,
>
>
>
> Alexandre dos Santos
> Ingenieur forestier, Msc.
> INRA- Biostatistique et Processus Spatiaux (BioSP)
> Domaine Saint-Paul
> Site Agroparc
> 84914 -  Avignon - France
> Tél. : +33 (0)6 87 95 16 29
>
>
>
>
>
>
>
>
> -----Original Message-----
> From: r-br-bounces em listas.c3sl.ufpr.br
> [mailto:r-br-bounces em listas.c3sl.ufpr.br] On Behalf Of Paulo Justiniano
> Sent: sexta-feira, 22 de abril de 2011 10:22
> To: r-br em listas.c3sl.ufpr.br
> Subject: Re: [R-br] Removendo pontos dentro de um grid
>
> Nests caso pensando no grid de pontos como uma matriz vc quer pegar os
> pontos que estao nas posicoes impares de linhas e colunas
>
> ind <- outer(2*(1:10)-1, 2*(1:10)-1, function(i,j) i+ 20*(j-1)) malha20 <-
> malha10[ind,]
>
>
> On Fri, 22 Apr 2011, Alexandre dos Santos wrote:
>
>>
>> Bom dia pessoal,
>>
>>
>>
>>     Estou criando uma malha de pontos da seguinte forma:
>>
>> p0<- c(15,15)#Ponto inicial
>>
>> malha10<- expand.grid(xp=seq(p0[1], by=10, length.out=20),
>> yp=seq(p0[2], by=10, length.out=20))#Criando um grid de pontos a cada
>> 10 metros
>>
>> plot(malha10)# Visualizando a malha de postos
>>
>>
>>
>> Agora, gostaria das coordenadas dos pontos a cada 20m, à partir de p0,
>> mas gostaria de manipular o objeto já criado malha10, sem ter que
>>
>> fazer um novo objeto expand.grid(... by=20), na verdade, gostaria de
>> criar um novo objeto malha20, mas fazendo malha20=malha10 e após
>> remover as coordenadas dos pontos do objeto malha10 que não satisfaçam
>> a condição , tentei um
>> outer() para descobrir as distancias entre todos os pontos e após
>> impor uma condição =20, mas não estou conseguindo não, alguem poderia
>> dar um help,
>>
>> Obrigado,
>>
>>
>>
>>
>>
>> Alexandre dos Santos
>>
>> Ingenieur forestier, Msc.
>>
>> INRA- Biostatistique et Processus Spatiaux (BioSP)
>>
>> Domaine Saint-Paul
>> Site Agroparc
>> 84914 -  Avignon - France
>> Tél. : +33 (0)6 87 95 16 29
>>
>>
>>
>>
>>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>
_______________________________________________
R-br mailing list
R-br em listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br



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