[R-br] problema com for loop

Vitor Aguiar vitor.aguiar em me.com
Segunda Março 26 07:26:41 BRT 2012


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.
> 
> 






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