[R-br] Combinar vetores com tamanhos diferentes...

Augusto Ribas ribas.aca em gmail.com
Domingo Maio 27 16:09:52 BRT 2012


Enquanto ninguem responde, da pra quebrar o galho assim.

#Seus dados
vet1 <- c(02,03,04,05,06,07,08,10,30,50,70,90)
vet2 <- c(10,11,13,14,15,16,17,18,19,31,51,71,91)
vet3 <- c(02,22,23,24,25,26,27,28,42,62,82)
vet4 <- c(03,13,23,30,31,33,34,35,36,37,38,39,43,53,63,73,83,93)
vet5 <- c(04,14,24,34,42,43,44,45,46,47,48,54,64,74,84,94)
vet6 <- c(05,15,25,35,45,50,51,53,54,55,56,57,58,59,65,75,85,95)
vet7 <- c(06,16,26,36,46,56,62,63,64,65,66,67,68,76,86,96)
vet8 <- c(07,17,27,37,47,57,67,70,71,73,74,75,76,77,78,79,87,97)
vet9 <- c(08,18,28,38,48,58,68,78,82,83,84,85,86,87,88,98)
vet10 <- c(19,39,59,79,90,91,93,94,95,96,97,98,99)

#junte numa lista
inicial<-list(vet1,vet2,vet3,vet4,vet5,vet6,vet7,vet8,vet9,vet10)

#descreva as combinações
combinações<-combn(1:10,4)

#faça uma pra testa
dados<-list(c(inicial[[combinações[1,1]]],inicial[[combinações[2,1]]],
              inicial[[combinações[3,1]]],inicial[[combinações[4,1]]]))
dados

#repita pro resto
for(i in 2:210) {

dados[[i]]<-list(c(inicial[[combinações[1,i]]],inicial[[combinações[2,i]]],

inicial[[combinações[3,i]]],inicial[[combinações[4,i]]]))
}

#confira, 210 combinações
length(dados)

#ache os duplicados
duplicated(dados[[1]])

#retire eles pra um caso pra testa
dados[[1]]<-dados[[1]][!duplicated(dados[[1]])]

#repita pra todos
for(i in 2:210) {
                 dados[[i]]<-dados[[i]][!duplicated(dados[[i]])]
                }

#sua lista final
dados
###### Fim   ####

Acho que o ideal seria usar apply ao invez de loop com for, se for
muito mais dados começa a ficar lento demais usar loop com for.
Mas acho que da pra quebrar o galho por enquanto, espero que ajude.

Em 27 de maio de 2012 12:12, andrebvs <andrebvs em bol.com.br> escreveu:
>
> Olá pessoal, gostaria de saber como combinar vetores de tamanhos diferentes, por exemplo:
>
> vet1 <- c(02,03,04,05,06,07,08,10,30,50,70,90)
> vet2 <- c(10,11,13,14,15,16,17,18,19,31,51,71,91)
> vet3 <- c(02,22,23,24,25,26,27,28,42,62,82)
> vet4 <- c(03,13,23,30,31,33,34,35,36,37,38,39,43,53,63,73,83,93)
> vet5 <- c(04,14,24,34,42,43,44,45,46,47,48,54,64,74,84,94)
> vet6 <- c(05,15,25,35,45,50,51,53,54,55,56,57,58,59,65,75,85,95)
> vet7 <- c(06,16,26,36,46,56,62,63,64,65,66,67,68,76,86,96)
> vet8 <- c(07,17,27,37,47,57,67,70,71,73,74,75,76,77,78,79,87,97)
> vet9 <- c(08,18,28,38,48,58,68,78,82,83,84,85,86,87,88,98)
> vet10 <- c(19,39,59,79,90,91,93,94,95,96,97,98,99)
>
> uma combinação seria, por exemplo: vet1,vet2,vet7,vet10, me retornaria o seguinte:
>
> 02,03,04,05,06,07,08,10,30,50,70,90,10,11,13,14,15,16,17,18,19,31,51,71,91,06,16,26,36,46,56,62,63,64,65,66,67,68,76,86,96,
> 19,39,59,79,9 0,91,93,94,95,96,97,98,99.
>
> então, quero combinar vetores tomandos 4 a 4 nesses 10 vetores, desde modo, terei um total de 210 vetores combinados ao todo.
> Se não for pedir muito, gostaria tb que tais resultados nao viessem com números repetidos.
>
> desde já agradeço.
>
> Att.
> André
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.




--
Grato
Augusto C. A. Ribas

Site Pessoal: http://augustoribas.heliohost.org
Lattes: http://lattes.cnpq.br/7355685961127056


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