[R-br] Converter valores em numeros 1 correspondentes

Alexandre dos Santos alexandresantosbr em yahoo.com.br
Quarta Abril 27 14:30:30 BRT 2011


Obrigado Pessoal,

 

      Mais ainda não deu certo a solução do Walmes não esta deixando tudo
dentro um mesmo vetor, se eu faço:

 

> set.seed(2011)

> x <- rpois(10, lambda=3)

> z<-sapply(x, function(r){ rep(1, r) })

> sum(z)

Erro em sum(z) : 'type' inválido (list) do argumento

 

        A mesma coisa com a solução do Lucas que fica:

> for(j in 1:length(x)){

+   for(i in 1:x[j]){

+     if(i==1) soma = 1

+     else soma = soma + 10^(i-1)

+   }

+   x[j] = soma

+ }

> 

> x

 [1]    11     1   111     1    11 11111     1   111 11111    11

> sum(x)

[1] 22480

enquanto a soma do vetor deveria ser 25

 

         Na verdade gostaria que meu objeto x sendo,

> set.seed(2011)

> x <- rpois(4, lambda=3)

> x

[1] 2 1 3 1

Se converta em:

> [1] 1 1 1 1 1 1 1

Sendo a sum(x)=7

 

Obrigado a todos,

 

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

 

 

 

 

From: r-br-bounces em listas.c3sl.ufpr.br
[mailto:r-br-bounces em listas.c3sl.ufpr.br] On Behalf Of Lucas Barbosa
Sent: quarta-feira, 27 de abril de 2011 13:53
To: r-br em listas.c3sl.ufpr.br
Subject: Re: [R-br] Converter valores em numeros 1 correspondentes

 

A solução vai depender do tipo de saída que você quer. Essa não é a solução
mais enxuta, mas funciona do jeito que você está precisando:

x = m.2
for(j in 1:length(x)){
  for(i in 1:x[j]){
    if(i==1) soma = 1
    else soma = soma + 10^(i-1)
  }
  x[j] = soma
}

É como converter os números para uma base numérica unária, se é que isso faz
sentido.




Em 27 de abril de 2011 13:30, Benilton Carvalho <beniltoncarvalho em gmail.com>
escreveu:

enqto eu nao sei exatamente o que ele quer, ai' vai como simplificar o
seu sapply()

mapply(rep, 1, x)

b

2011/4/27 Walmes Zeviani <walmeszeviani em gmail.com>:

> Alexandre,
>
> Postei a solução sem avaliar o código e confundi as coisas. Segue o CMR
> corrigido
>
> set.seed(2011)
> x <- rpois(10, lambda=3)
> sapply(x, function(r){ rep(1, r) })
>
> À disposição.
> Walmes.
>
> ==========================================================================
> Walmes Marques Zeviani
> LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W)
> Departamento de Estatística - Universidade Federal do Paraná
> fone: (+55) 41 3361 3573
> VoIP: (3361 3600) 1053 1173
> e-mail: walmes em ufpr.br
> twitter: @walmeszeviani
> homepage: http://www.leg.ufpr.br/~walmes
<http://www.leg.ufpr.br/%7Ewalmes> 
> linux user number: 531218
> ==========================================================================
>

> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>
>



--
Successful people ask better questions, and as a result, they get
better answers. (Tony Robbins)
_______________________________________________
R-br mailing list
R-br em listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

 

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20110427/b88ee710/attachment.html>


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