[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