====== explor.an ====== explor.an <- function (x,y,tabela=TRUE,graph=TRUE) { if(class(x)!="data.frame" && class(x)!="numeric" && class(x)!="integer" && x>0) { # verificar se x e # da classe data.frame, numerico e inteiro stop("Cuidado! Somente classe data frame permitida com dados numericos > 0") # funcao para se nao for a # classe correta } if(class(y)!="data.frame" && class(y)!="numeric" ) { # verificar se y e da classe data.frame e # numerico stop("Cuidado! Somente classe data frame permitida com dados numericos") # funcao para se nao for a classe # correta } sum.ind.psg <- round(rowSums(x),digits=0) # soma dos individuos por paisagem num.ind.tot <- sum(sum.ind.psg) # numero total de individuos prop.ind <- round((sum.ind.psg)/(num.ind.tot),digits=3) # porporcao de individuos por paisagem bin <- x # transformar em dados binarios para somar o numero de especies bin[bin > 0] <- 1 # transformar em dados binarios para somar o numero de especies sum.spp.psg <- round(rowSums(bin),digits=0) # soma do numero de especies por paisagem num.spp.tot <- ncol(bin) # numero total de especies prop.spp <- round((sum.spp.psg)/(num.spp.tot),digits=3) # proporcao de especies por paisagem resumo <- data.frame(sum.ind.psg,prop.ind,sum.spp.psg,prop.spp) # colocando as informacoes do numero de # individuos e especies por pisagem, bem como as porporcoes colnames(resumo) <- c("Individuals number","Ind proportion","Species number","Spp proportion") # nomeando # as colunas do objeto 'resumo' if(tabela) { # se @ usuari@ quiser que uma tabela com as informacoes seja criada no diretorio a # funcao seguira esses passos (tabela=TRUE) install.packages("MASS") # instala o pacote necessario para usar a funcao 'write.matrix' library(MASS) # ativa o pacote na area de trabalho atual write.matrix(resumo,file="tabela.csv",sep="\t") # cria uma tabela csv no diretorio com as informacoes do # objeto 'resumo' } if (graph) { # se @ usuari@ quiser um grafico com a distribuicao das especies nas # paisagens(graph=TRUE) spp <- as.matrix(x) # transformando o dado x (data.frame) em matriz grad.var <- data.matrix(y) # transformando em matriz numerica (as.matrix nao funcionou aqui) y.ord <- spp[order(grad.var[,1]),] # ordenando as paisagens pelo gradiente da variavel sum.p <- colSums(spp*grad.var[,1]/colSums(spp)) # calculando abundancia ponderada das spp nas paisagens spp.ord <- y.ord[,order(sum.p,decreasing=T)] # ordenando as especies por essa abundancia ponderada NAS # PAISAGENS num.col <- as.matrix(spp.ord) # numero de colunas desta tabela serao as linha do grafico de distribuicao # de spp par(mfrow=c(ncol(num.col)+2,1),mar=c(0.2,3,0.2,8),oma=c(3,2,3,6),font=1) # configura a janela onde sera # plotado o grafico layout(matrix(1:(ncol(num.col)+1)),heights=c(3,rep(1,ncol(num.col)))) # configura na janela do grafico a # linha onde sera plotado gradiente da variavel ambiental plot(sort(grad.var[,1]),axes=F,mfg=c(21,1),lwd=10,las=2,lend="butt",xaxt="n",type="h", ylim=c(min(grad.var),max(grad.var))) # plotando o gradiente da variavel ambiental axis(side=2,at=c(min(grad.var[,1]),max(grad.var[,1])),las=2) # plota o eixo vertical com os valores # maximo e minimo da variavel ambiental axis(side=3,at=c(1:nrow(num.col)),rownames(num.col),las=1,cex.axis=0.8) # plota o eixo com o nomes dos # sitios for(i in 1:ncol(num.col)) { # inicia o ciclo que plota a informacao da abundancia ponderada das # especies por paisagem barplot(num.col[,i],bty="l",axisnames=F,axes=FALSE) # plota os eixos horizontais com a abundancia ponderada # das especies mtext(colnames(num.col)[i],side=3,line=-1,adj=1.3,cex=0.9) # nomeia os eixos horizontais com as # especies mtext("Species abundance",2,outer=T,line=-2) # nomeia o eixo da abundancia das especies } } return(resumo) }