[R-br] problema com for loop
Vitor Aguiar
vitor.aguiar em me.com
Segunda Março 26 16:48:55 BRT 2012
Mais uma vez muito obrigado.
Vitor
On Mar 26, 2012, at 3:33 AM, Benilton Carvalho wrote:
> Se fosse apenas um valor escalar armazenado numa variavel chamada 'x':
>
> ## para fazer algo com os NAs
> if (is.na(x))
> faca isso
>
> ## para fazer algo com qq valor q nao seja NA
> if (!is.na(x))
> faca aquilo
>
> b
>
> 2012/3/26 Vitor Aguiar <vitor.aguiar em me.com>:
>> Bom, eu gostaria então de fazer outra pergunta simples.
>> O arquivo da última mensagem ("http://www.datafilehost.com/download-9a400f40.html") tem alguns valores em branco (NA). Eu gostaria de analisar esses dados com um loop e, dentro desse loop, incluir a condição "se o valor for NA, desconsiderar e analisar o próximo valor".
>> Faço isso com if( )? Alguém pode ajudar como escrever?
>>
>> PS: Acho q não precisa nem abrir o arquivo pra responder, é só uma pergunta teórica.
>>
>> Muito Obrigado,
>> Vitor
>>
>>
>>
>> Nesses dados:
>> On Mar 23, 2012, at 4:57 PM, Vitor Aguiar wrote:
>>
>>> Você está certo Benilton. O seu método não produz NAs. Mas como disse, sou biólogo e novo em programação... eu preciso expandir esse código incluindo outras análises, e eu não consegui fazer isso usando regular expressions, pois eu entendo pouco sobre elas, e então tentei por outro caminho, não tão elegante quanto o seu.
>>> Mas eu tentarei focar em aprender isso agora. Muito obrigado pela pronta resposta!
>>>
>>> Vitor
>>>
>>>
>>>
>>> On Mar 23, 2012, at 3:23 PM, Benilton Carvalho wrote:
>>>
>>>> Vitor,
>>>>
>>>> eu nao consigo entender o q vc quer fazer/dizer... o codigo que eu
>>>> havia recomendado nao produz NA, ate' onde eu me lembro.
>>>>
>>>> ou sera' q vc esta' se referindo a casos onde toda a coluna e' faltante?
>>>>
>>>> x = rep(NA, 5)
>>>> y = sample(letters[1:3], 5, rep=T)
>>>> table(x, y)
>>>>
>>>> eh isso?
>>>>
>>>> b
>>>>
>>>> 2012/3/23 Vitor Aguiar <vitor.aguiar em me.com>:
>>>>> Gostaria de pedir ajuda novamente sobre o mesmo problema.
>>>>> Talvez Benilton ou outro usuário de loops possam ajudar. Acho que a resposta
>>>>> é muito simples.
>>>>> Desde já agradeço.
>>>>>
>>>>> # Usando o arquivo abaixo com algumas células em branco (pois o valor não
>>>>> existe). Então o loop abaixo não funciona. Eu gostaria que o loop corresse
>>>>> pelo arquivo e, quando encontrasse um valor faltando, ele ignorasse e
>>>>> pulasse para o próximo valor, sem produzir um NA no meu output. Talvez usar
>>>>> if statement...
>>>>>
>>>>> file: http://www.datafilehost.com/download-9a400f40.html
>>>>>
>>>>> pop = read.csv("file.csv", row.names = 1)
>>>>> counter = 1
>>>>> while (counter < length(names(pop))) {
>>>>> N = length(c(pop[ ,counter]))
>>>>> Names = levels(factor(c(pop[ ,counter], pop[ ,counter + 1])))
>>>>> ObsGen = matrix(0, nrow = length(Names), ncol = length(Names), dimnames =
>>>>> list(Names, Names))
>>>>> for(i in 1:N) {
>>>>> ObsGen[paste(pop[i, counter]), paste(pop[i, counter + 1])] =
>>>>> ObsGen[paste(pop[i, counter]), paste(pop[i, counter + 1])] + 1
>>>>> }
>>>>> print(ObsGen)
>>>>> counter = counter + 2
>>>>> }
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Mar 12, 2012, at 11:55 AM, Vitor Aguiar wrote:
>>>>>
>>>>> Muito boa alternativa.
>>>>> Muito obrigado Benilton!
>>>>>
>>>>>
>>>>> On Mar 12, 2012, at 3:51 AM, Benilton Carvalho wrote:
>>>>>
>>>>> Desde que os nomes dos grupos nao sejam ambiguos:
>>>>>
>>>>>
>>>>> grupos <- unique(gsub("(.*)\\.\\d{1}$", "\\1", names(Pop)))
>>>>>
>>>>> tabelaPorGrupo <- function(grp, dat){
>>>>>
>>>>> cols <- grep(grp, names(dat))
>>>>>
>>>>> Nomes <- levels(factor(c(dat[,cols[1]], dat[,cols[2]])))
>>>>>
>>>>> table(factor(Pop[,cols[1]], levels=Nomes), factor(Pop[,cols[2]],
>>>>>
>>>>> levels=Nomes))
>>>>>
>>>>> }
>>>>>
>>>>> tabelas <- lapply(grupos, tabelaPorGrupo, Pop)
>>>>>
>>>>> names(tabelas) <- grupos
>>>>>
>>>>> tabelas
>>>>>
>>>>>
>>>>>
>>>>> b
>>>>>
>>>>> _______________________________________________
>>>>>
>>>>> 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.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> 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.
>>>> _______________________________________________
>>>> 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.
>>>
>>>
>>
>>
>>
>>
>> _______________________________________________
>> 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.
> _______________________________________________
> 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.
Mais detalhes sobre a lista de discussão R-br