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)
}