Converter valores em numeros 1 correspondentes

Boa tarde amigos do R, Estou com uma conversão que imagino ser bem complicada de fazer, preciso pegar vários objetos como por exemplo um deles:
m.2
[1] 5 2 1 2 2 1 1 5 6 8 2 1 3 6 2 12 7 2 19 1 1 3 7 2 3 2 1 1 4 5 1 3 2 1 3 8 3 37 3 3 2 2 3 1 1 1 1 1 4 3 1 4 2 1 3 3 55 5 1 3 3 1 1 4 E converter para um novo vetor somente com números 1 correspondentes a cada um dos valores em m.2 , obviamente que os valores que já são 1 não seriam modicados, mas o primeiro valor o 5, seria substituido por 1 1 1 1 1, o 2 por 1 1 , assim successivamente para todos os valores, Alguém poderia me dar uma luz, se é que tem jeito, 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

se o seu vetor fosse x = c(2, 1, 3) entao vc gostaria de ter um vetor de 1's com comprimento 6, e' isso? ou seria um vetor de comprimento 3, no qual o primeiro elemento e' a string '1 1' e o terceiro elemento e' a string '1 1 1'? b 2011/4/27 Alexandre dos Santos <alexandresantosbr@yahoo.com.br>:
Boa tarde amigos do R,
Estou com uma conversão que imagino ser bem complicada de fazer, preciso pegar vários objetos como por exemplo um deles:
m.2
[1] 5 2 1 2 2 1 1 5 6 8 2 1 3 6 2 12 7 2 19 1 1 3 7 2 3 2 1 1 4 5 1 3 2 1 3 8 3 37 3 3 2 2 3 1 1 1 1 1 4 3 1 4 2 1 3 3 55 5 1 3 3 1 1 4
E converter para um novo vetor somente com números 1 correspondentes a cada um dos valores em m.2 , obviamente que os valores que já são 1 não seriam modicados, mas o primeiro valor o 5, seria substituido por 1 1 1 1 1, o 2 por 1 1 , assim successivamente para todos os valores,
Alguém poderia me dar uma luz, se é que tem jeito,
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@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)

Se entendi bem: rep(1,sum(m.2)) Em 27 de abril de 2011 13:20, Benilton Carvalho <beniltoncarvalho@gmail.com>escreveu:
se o seu vetor fosse
x = c(2, 1, 3)
entao vc gostaria de ter um vetor de 1's com comprimento 6, e' isso?
ou seria um vetor de comprimento 3, no qual o primeiro elemento e' a string '1 1' e o terceiro elemento e' a string '1 1 1'?
b
2011/4/27 Alexandre dos Santos <alexandresantosbr@yahoo.com.br>:
Boa tarde amigos do R,
Estou com uma conversão que imagino ser bem complicada de fazer, preciso pegar vários objetos como por exemplo um deles:
m.2
[1] 5 2 1 2 2 1 1 5 6 8 2 1 3 6 2 12 7 2 19 1 1 3 7 2 3 2 1 1 4 5 1 3 2 1 3 8 3 37 3 3 2 2 3 1 1 1 1 1 4 3 1 4 2 1 3 3 55 5 1 3 3 1 1 4
E converter para um novo vetor somente com números 1 correspondentes a cada um dos valores em m.2 , obviamente que os valores que já são 1 não seriam modicados, mas o primeiro valor o 5, seria substituido por 1 1 1 1 1, o 2 por 1 1 , assim successivamente para todos os valores,
Alguém poderia me dar uma luz, se é que tem jeito,
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@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@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
-- Att. Iago Carvalho Cunha

Obrigado Iago e a atenção de todos, funcionou,
rep(1,sum(m.2))
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [76] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [151] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [226] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Abraço, 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@listas.c3sl.ufpr.br [mailto:r-br-bounces@listas.c3sl.ufpr.br] On Behalf Of Iago Carvalho Cunha Sent: quarta-feira, 27 de abril de 2011 13:24 To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Converter valores em numeros 1 correspondentes Se entendi bem: rep(1,sum(m.2)) Em 27 de abril de 2011 13:20, Benilton Carvalho <beniltoncarvalho@gmail.com> escreveu: se o seu vetor fosse x = c(2, 1, 3) entao vc gostaria de ter um vetor de 1's com comprimento 6, e' isso? ou seria um vetor de comprimento 3, no qual o primeiro elemento e' a string '1 1' e o terceiro elemento e' a string '1 1 1'? b 2011/4/27 Alexandre dos Santos <alexandresantosbr@yahoo.com.br>:
Boa tarde amigos do R,
Estou com uma conversão que imagino ser bem complicada de fazer, preciso pegar vários objetos como por exemplo um deles:
m.2
[1] 5 2 1 2 2 1 1 5 6 8 2 1 3 6 2 12 7 2 19 1 1 3 7 2 3 2 1 1 4 5 1 3 2 1 3 8 3 37 3 3 2 2 3 1 1 1 1 1 4 3 1 4 2 1 3 3 55 5 1 3 3 1 1 4
E converter para um novo vetor somente com números 1 correspondentes a cada um dos valores em m.2 , obviamente que os valores que já são 1 não seriam modicados, mas o primeiro valor o 5, seria substituido por 1 1 1 1 1, o 2 por 1 1 , assim successivamente para todos os valores,
Alguém poderia me dar uma luz, se é que tem jeito,
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@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@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br -- Att. Iago Carvalho Cunha

Alexandre, Segue CMR, set.seed(2011) x <- rpois(10, lambda=3) do.call(c, sapply(x, seq_len)) À 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@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

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@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

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@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@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================
_______________________________________________ R-br mailing list R-br@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)

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@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@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@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218
==========================================================================
_______________________________________________ R-br mailing list R-br@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@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-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@listas.c3sl.ufpr.br [mailto:r-br-bounces@listas.c3sl.ufpr.br] On Behalf Of Lucas Barbosa Sent: quarta-feira, 27 de abril de 2011 13:53 To: r-br@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@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@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@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@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@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

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@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@listas.c3sl.ufpr.br [mailto:r-br-bounces@listas.c3sl.ufpr.br] On Behalf Of Lucas Barbosa Sent: quarta-feira, 27 de abril de 2011 13:53 To: r-br@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@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@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@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================
_______________________________________________ R-br mailing list R-br@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@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@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)

Alexandre, Usa um do.call() com o mapply() do Benilton para concaternar tudo. set.seed(2011) x <- rpois(4, lambda=3) do.call(c, mapply(rep, 1, x)) À 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@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

Walmes Vc precisaria do unlist() nisto ou... talvez assim fique mais direto rep(rep(1, length(x)), x) On Wed, 27 Apr 2011, Walmes Zeviani wrote:
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@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

Prof. Paulo, Estava precisando converter objetos com vetores de valores observados em valores binários para utilizar como censor em uma análise de sobrevivência, Obrigado também pela contribuição, Alexandre -----Original Message----- From: r-br-bounces@listas.c3sl.ufpr.br [mailto:r-br-bounces@listas.c3sl.ufpr.br] On Behalf Of Paulo Justiniano Sent: quarta-feira, 27 de abril de 2011 15:21 To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Converter valores em numeros 1 correspondentes Walmes Vc precisaria do unlist() nisto ou... talvez assim fique mais direto rep(rep(1, length(x)), x) On Wed, 27 Apr 2011, Walmes Zeviani wrote:
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@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ====================================================================== ====
participantes (6)
-
Alexandre dos Santos
-
Benilton Carvalho
-
Iago Carvalho Cunha
-
Lucas Barbosa
-
Paulo Justiniano
-
Walmes Zeviani