[R-br] Converter valores em numeros 1 correspondentes

Benilton Carvalho beniltoncarvalho em gmail.com
Quarta Abril 27 14:38:35 BRT 2011


Alexandre, se vc puder fazer a gentileza de explicar mais claramente o
que vc deseja, a gente pode ajudar mais efetivamente, ao inves de
ficar chutando o que vc precisa.

Usando o exemplo do Walmes, eis algumas possibilidades

set.seed(2011)
x <- rpois(10, lambda=3)

## opcao 1
unlist(mapply(rep, 1, x))

## opcao 2
sapply(mapply(rep, 1, x), paste, collapse=' ')

## opcao 3
sapply(mapply(rep, 1, x), paste, collapse='')

b

2011/4/27 Alexandre dos Santos <alexandresantosbr em yahoo.com.br>:
> 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
>> 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
>
>
>
> _______________________________________________
> 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)


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