[R-br] Ajuda com uso de list(). Como fazer uma lista de listas?
Augusto Ribas
ribas.aca em gmail.com
Domingo Junho 24 16:49:02 BRT 2012
Obrigado Benilton.
Eu consegui chegar onde queria.
Eu queria isso:
#função pra ver qual parasitas esta extinguindo dados a morte dos
hospedeiros extintos
ext.list<-function(dados,extintos) {
lista.extintos<-rownames(dados)[which(rowSums(dados[,!dimnames(dados)[[2]]%in%extintos,drop=F])<1)]
return(lista.extintos)
}
##################################################################
#exemplo
##################################################################
dados<-matrix(c(1,1,0,0,0,0,
0,1,1,0,0,0,
0,0,1,1,0,0,
0,0,0,1,1,0,
0,0,0,0,1,1,
1,0,0,0,0,1),byrow=T,ncol=6,nrow=6,
dimnames=list(paste("P",1:6,sep=""),paste("H",1:6,sep="")))
dados
#quem vai extinguir
extinto<-sample(colnames(dados),ncol(dados),replace=F)
extinto
lista.extintos<-list(NA)
#Primeiro caso
#loop
for(i in 1:ncol(dados)) {
lista.extintos[[i]]<-ext.list(dados,extinto[1:i])
}
lista.extintos
#Criando uma lista pra receber outras simulações
lista.final<-list(lista.extintos)
lista.final
#fazendo mais 9 pra interar 10
for (j in 2:10) {
extinto<-sample(colnames(dados),ncol(dados),replace=F)
for(i in 1:ncol(dados)) {
lista.extintos[[i]]<-ext.list(dados,extinto[1:i])
}
lista.final[[j]]<-lista.extintos
}
#agora fico com 10 listas e cada lista tem 6 itens, eu não estava
conseguindo usar o listas pra poder ficar separada as listas
#treinando com seu exemplo eu consegui visualizar como fazer
lista.final
hist.final<-matrix(NA,ncol=10,nrow=6,dimnames=list(paste("P",1:6,sep=""),paste("Simulação",1:10,sep="
")))
#ai uma utilidade é a outra pergunta, ver qd a sp estinguiu
hist.final
for(j in rownames(hist.final)) {
for(i in 1:10) {
hist.final[j,i]<-which(mapply("%in%",j, lista.final[[i]]))[1]
}
}
#a principio essa era a resposta que eu queria
hist.final
Agora tenho que trocar esses loops por applys.
Mas muito obrigado pela ajuda :)
Assim ja da pra brincar como mudanças na matriz e nas probabilidades
de extinção afetam quando os parasitas estão sendo extintos :)
--
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