[R-br] problema com for loop

Vitor Aguiar vitor.aguiar em me.com
Sexta Março 23 20:57:20 BRT 2012


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