
Eu nao entendi muito bem sua primeira pergunta: #Mas aqui eu não sei o que fazer, extiste alguma forma de eu fazer um objeto que seja uma lista de listas, pra guardar esses resultados. Mas sera' q o q vc quer e' algo como: for (i in 1:ncol(dados)){ algumaMatriz <- matrix(rnorm(20), nc=4) algumOutroResultado <- ext.list(dados, extinto[1:i]) lista.extintos[[i]] <- list(matriz=algumaMatriz, resultado=algumOutroResultado) } #Outra duvida sobre listas é no caso da lista acima, vamos supor que eu gostaria de saber em qual numero (o [[n]]) o "P2" esta a primeira vez, tem como fazer? lista.extintos = list(character(0), "P4", c("P4", "P6"), c("P4", "P6"), c("P4", "P5", "P6"), c("P1", "P2", "P3", "P4", "P5", "P6")) which(mapply('%in%', 'P2', lista.extintos)) ## onde tem P2 which(mapply('%in%', 'P2', lista.extintos))]1] ## onde eh o primeiro P2 #E se der pra fazer uma lista de listas, como faz? Assumindo q a lista de lista seja nomeada como fiz na primeira resposta: which(mapply('%in%', 'P2', lapply(lista.extintos, '[[', 'resultado'))) b 2012/6/15 Augusto Ribas <ribas.aca@gmail.com>:
Ola pessoal. Estou aqui sofrendo para usar listas no R, resumidamente eu estou com dificuldades em criar uma lista de listas.
Segue aqui um CMR, espero não esteja muito longo.
#Eu tenho uma matriz que é o rede de interação entre algumas especies de hospedeiros e parasitas, por exemplo: dados<-matrix(c(1,1,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,0,1,0,0, 0,0,0,1,1,0, 0,0,0,0,0,1),byrow=T,ncol=6,nrow=6, dimnames=list(paste("P",1:6,sep=""),paste("H",1:6,sep=""))) dados
#E estava querendo ver qual o efeito das extinções dos hospedeiros nos parasitas, então eu crio uma sequencia de extinção de hospedeiros
set.seed(13) extinto<-sample(colnames(dados),ncol(dados),replace=F) extinto
# vejo de acordo com essas extinções, qts parasitas vão morrendo por falta de hospedeiro, então fiz uma função pra contar isso
ext.cont<-function(dados,extintos) { spextintas<-sum(rowSums(dados[,!dimnames(dados)[[2]]%in%extintos,drop=F])<1) return(spextintas) }
#ai salvo o resultado num vetor resultado<-rep(NA,ncol(dados)) resultado
#loop faço um loop pra ver a sequencia, tipo somente a primeira especie, a primeira e a segunda, as tres primeiras até todas as especies. for(i in 1:ncol(dados)) { resultado[i]<-ext.cont(dados,extinto[1:i]) } resultado
#mas ai eu posso fazer isso varias vezes pra ver como é de forma geral final<-cbind(resultado) for (j in 1:4) { extinto<-sample(colnames(dados),ncol(dados),replace=F) for(i in 1:1:ncol(dados)) { resultado[i]<-ext.cont(dados,extinto[1:i]) } final<-cbind(final,resultado) }
final matplot(1:6,final,type="b",pch=1,lty=1)
#so que eu gostaria de saber quem esta extinguindo também, então fiz uma função
ext.list<-function(dados,extintos) { lista.extintos<-rownames(dados)[which(rowSums(dados[,!dimnames(dados)[[2]]%in%extintos,drop=F])<1)] return(lista.extintos) }
# e como pode tanto não extinguir ninguem como mais de uma expecie imagino que seja interessante usar uma lista lista.extintos<-list(NA)
#loop for(i in 1:ncol(dados)) { lista.extintos[[i]]<-ext.list(dados,extinto[1:i]) }
lista.extintos
#so que ai so para a contagem, eu conseguia salva varios resultados na forma de uma matriz. #Mas aqui eu não sei o que fazer, extiste alguma forma de eu fazer um objeto que seja uma lista de listas, pra guardar esses resultados. #Outra duvida sobre listas é no caso da lista acima, vamos supor que eu gostaria de saber em qual numero (o [[n]]) o "P2" esta a primeira vez, tem como fazer? #Por exemplo se fosse um vetor eu usaria o teste == , agora sendo uma lista como eu faço pra saber em quais elementos ([[n]]) ele esta, ou a primeira vez que aparece. #E se der pra fazer uma lista de listas, como faz? #Espero não ter sido confuso na terminologia.
Muito obrigado e boa a noite a todos :)
-- Grato Augusto C. A. Ribas
Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056 _______________________________________________ R-br mailing list R-br@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.