[R-br] Contagem de sequencias baseado no tamanho da cadeia

Fernando Gama f.fabiogama88 em gmail.com
Sábado Maio 14 17:10:03 BRT 2016


Oi Augusto obrigado por responder.,

Correção quando escrevi: Ai ficaria assim:   [​8 9 6* 0* 8 7 8 *0* 9 *2* 6
6 *0* 7 8 *2 *8 *1 3* 6 *3 2* *3 * *2* *0* 6 *3 3* 8 7​]*

o output ficaria assim: [​*0* *0* *2* *0* *2* *1 3* *3 2* *3* *2* *0* *3 3* ​]
o retorno da sua função exemplo está correto Augusto, porém perdemos a
referência de contagem.

Eu só posso fazer a contagem do tamanho da cadeia quando vierem *em
sequencia (marquei com underline ai em cima)*. Nesse caso, como o tamanho
da cadeia = 2, Então eu irei contar da seguinte forma:

Em suma:
Frequencia da cadeia = [3 3] + [2 0] + [2 3] + [1 3] = 4.

Gostaria de ter esse retorno na função: Total=*4*.

Obrigado.

Em 14 de maio de 2016 16:03, Augusto Ribas <ribas.aca em gmail.com> escreveu:

> Eu não entendi muito bem o problema, mas daria para definir uma função, e
> usar ela no lapply para toda a sua lista.
> Veja se esse exemplo ajuda.
>
> ###Gerando dados de exemplo
> set.seed(123)
> lista<-list()
> j<-1
> for(i in sample(1:10,20,replace=T)){
>     lista[[j]]<-sample(1:10,i,replace=T)
>     j<-j+1
> }
> ###O exemplo
> lista
>
> ###Faça uma função que retorna o que você quer
> funcao<-function(x){
>     if(length(x)>2 && sum(x<4)>=1){
>         return(x[x<4])
>     }else{
>         return(NA)
>     }
> }
>
> ###Exemplo de uso
> funcao(lista[[1]])
> funcao(lista[[2]])
>
> ###Para uma lista, da para usar lapply
> lapply(lista,funcao)
>
> Em 14 de maio de 2016 14:35, Fernando Gama <f.fabiogama88 em gmail.com>
> escreveu:
>
>> Eu tenho uma lista com os seguintes numeros:
>>
>> individuo[[1]]= [​8 9 6 0 8 7 8 0 9 2 6 6 0 7 8 2 8 1 3 6 3 2 3 2 0 6 3 3
>> 8 7​]
>>
>> Gostaria de detectar (realizar a contagem de sequencias dada um tamanho
>> de cadeia).
>> Baseado nos seguintes filtros:
>>
>> 1) tamanho da cadeia = 2
>> 2) pegar somente os valores iguais ou abaixo de 4
>>
>> Ai ficaria assim:   [​8 9 6* 0* 8 7 8 *0* 9 *2* 6 6 *0* 7 8 *2 *8 *1 3*
>> 6 *3 2* *3* *2* *0* 6 *3 3* 8 7​]
>>
>> Tentei fazer começar com o which() para pegar as posicoes em sequencia:
>> which(individuo[[1]]<=4)  e com rle(individuo[[1]]), este ultimo só
>> funciona para sequencias de numeros iguais.
>>
>> ​Porém, ainda nao encontrei uma maneira de detectar sequencias baseados
>> no tamanho da cadeia. Como setei lá em cima(tamanho da cadeia = 2), então o
>> output seria essas 4 sequencias:
>> [*1  3*  *3  2 * *3  2*  *3  3*]. Teria portanto, 8 numeros com 4
>> sequencias.
>>
>> Alguem pode ajudar? :/
>>
>>
>>>>
>>
>> --
>> Att,
>> ​Fernando.​
>>
>>
>> _______________________________________________
>> 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://recologia.com.br/ <http://augustoribas.heliohost.org>
> Github: https://github.com/Squiercg
> Lattes: http://lattes.cnpq.br/7355685961127056
>
> _______________________________________________
> 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.
>



-- 
Att,

Fernando Gama da Mata
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160514/704eed39/attachment.html>


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