====== Diogo ======
{{http://sphotos-d.ak.fbcdn.net/hphotos-ak-ash4/409426_1842750765709_1578908911_n.jpg?200|Esse sou eu!}}
Mestre em Botânica pela UEFS
Doutorando em Ecologia pela UESC
O título da minha Tese é "Diversidade vegetal em Floresta Atlântica no sul da Bahia: uma avaliação dos efeitos ambientais sobre a composição e estrutura da comunidade arbórea".
Desejo me aprofundar no uso do R e em um futuro próximo utilizar esta ferramenta em todas as análise de meu projeto.
====== Exercícios ======
[[.:exec]]
====== Proposta de Trabalho Final ======
===== Plano A =====
Uma das tarefas árduas de quem trabalha com botânica é arrumar a lista de espécies, principalmente quando se trabalha em ambiente com alta diversidade e estas listas tendem a ser muito extensas. Um dos passos para organização da lista é colocar o nome do autor na espécie.
Desta forma tenho interesse em criar uma função onde o objeto de entrada seria um data frame com a lista de espécies, podendo ser organizada uma espécie por linha na primeira coluna. Ou ainda, uma espécie por linha, mas na primeira coluna o nome do gênero e na segunda o epíteto específico correspondente.
O objeto de saída seria um data frame composto pelo objeto original acrescido de uma coluna com o nome do autor da espécie.
Aumentando a ambição da função, este objeto poderia ter ainda uma coluna com a distribuição geográfica da espécie.
Estes dados seriam retirados da base de dados que consta no site da Lista de espécies da Flora do Brasil [[http://reflora.jbrj.gov.br/jabot/listaBrasil/ConsultaPublicaUC/ConsultaPublicaUC.do|Flora do Brasil]].
===== Plano B =====
Como plano B sugiro uma função que possa calcular as distâncias geográficas entre determinadas coordenadas.
O objeto de entrada seria uma matriz numérica com as latitudes na primeira coluna e a longitude na segunda coluna. As unidades das coordenas poderiam ser em UTM ou graus decimais.
O objeto de saída seria uma matriz numérica com a distância, em Km ou em metros (escolhidas por um argumento) entre os pontos de entrada. Esta matriz de saída seria similar a matriz gerada pelo calculo de índices de similaridade.
==== Comentários ====
Olá Diogo,
As dua proposta são factíveis. A primeira vai necessitar que a sua função inclua a base de dados da Flora, mas acho que é possível. A segunda é interessante tb. e poderia ter diferentes possibilidade de entradas, por exemplo UTM ou graus. Deve só tomar cuidado no cálculo pois tem que levar em consideração que a conversão de graus para distância deve levar em consideração a forma da terra. Há diferentes formas de fazer a conversão, pegue uma e deixe claro isso na sua documentação.
--- //[[adalardo@usp.br|Alexandre Adalardo de Oliveira]] 2013/03/24 11:49//
===== TRABALHO FINAL =====
== Help ==
floristic package: unknown R Documentation
Busca os nomes dos autores de espécies de angiospermas
---------------------
Descrição
---------------------
Esta função lê uma lista de espécies de angiospermas e retorna a mesma lista de espécies acrescida dos nomes dos autores de cada uma.
--------------
Uso
--------------
floristic(lista,coluna=2, bd="brasil",csv=TRUE, familia=FALSE, grafico=FALSE)
-----------------
Argumentos
-----------------
lista uma matriz ou um data frame de caracteres ou fator contendo a lista de espécies. Cada espécie deve estar em uma linha da mesma coluna.
coluna número da coluna que contém os nomes das espécies, o defalt é 2.
bd banco de dados a ser utilizados para busca. O default é um banco com os nomes das espécies de angiospermas do Brasil.
Os nomes aceitos são:
"brasil" (todas as plantas do Brasil),
"norte" (plantas que ocorrem na região Norte do Brasil)
"nordeste" (plantas que ocorrem na região Nordeste do Brasil)
"centro-oeste" (plantas que ocorrem na região Centro-Oeste do Brasil)
"sudeste" (plantas que ocorrem na região Sudeste do Brasil)
"sul" (plantas que ocorrem na região Sul do Brasil)
csv se TRUE, a função cria um arquivo de extenção CSV no seu diretório de trabalho. Note que o default é FALSE.
familia se consta em lista o nome das famílias de cada espécie, então este argumento deve ser TRUE. Os nomes das famílias devem estar na primeira coluna. O default é FALSE.
grafico este argumento só terá efeito se familia for TRUE. Caso seja TRUE, retornará um gráfico com as 8 famílias de maior riqueza de espécies.
--------------
Detalhes
--------------
É recomendada a utilização do argumento familia=TRUE para que seja possível colocar o nome das famílias de cada espécie, bem como um gráfico diagnóstico que mostra as famílias com maior riqueza.
Recomenda-se fortemente retirar os "cf." ou "aff." das espécies, pois pode impedir a busca correta da espécie no banco de dados.
-----------
Valor
-----------
O objeto de saída é um data frame com a primeira coluna contendo o nome das famílias, a segunda coluna contendo o nome das espécies e a terceira coluna contendo um "*" onde tiver uma espécie não encontrada no banco de dados.
---------
Autor:
---------
Rocha, Diogo S. B.
diogosbr@gmail.com
-----------------
Referências
-----------------
Lista de Espécies da Flora do Brasil 2013 in http://floradobrasil.jbrj.gov.br
------------------
Veja também
------------------
#########
---------------
Exemplos
---------------
teste=data.frame(Família=c("Fabaceae" , "Myrtaceae" , "Asteraceae" , "Rosaceae" , "Elaeocarpaceae" , "Meliaceae" , "Bignoniaceae" , "Melastomataceae",
"Lauraceae" ,"Myrtaceae" , "Sapindaceae" , "Fabaceae" , "Polygonaceae" , "Melastomataceae" ,"Myrtaceae" ,
"Solanaceae" , "Myrtaceae", "Lauraceae" , "Myrtaceae" , "Annonaceae" ),
Espécie= c("Copaifera trapaezifolia" , "Eugenia itapemirimensis" , "Vernonanthura diffusa" , "Prunus myrtifolia" , "Sloanea guianensis",
"Cabralea canjerana" , "Handroanthus heptaphyllus" ,"Leandra melastomoides" , "Ocotea daphinifolia" , "Campomanesia dichotoma" ,
"Paullinia carpopoda" , "Fabaceae sp01 " , "Cocoloba mosenii" , "Miconia tristis",
"Plinia sp01" , "Solanum rupincola" , "Myrceugenia pilotantha" , "Aniba sp02" , "Eugenia sp05" , "Guatteria pogonopus" ) )
result=floristic (teste, coluna=2 )
#usando o gráfico diagnóstico
result=floristic (teste, familia=TRUE, grafico=TRUE )
== Função ==
##########
##Função##
##########
floristic=function(lista,coluna=2,bd="brasil",csv=TRUE, familia=FALSE, grafico=FALSE)
{
if(coluna>dim(lista)[2]) ##caso seja digitado o número da coluna errado
{
stop("A coluna escolhida não existe")
}
if(sum(class(lista[,coluna])!=c("factor","character"))>=2) #Caso a coluna que contem espécies seja diferente de fator ou caractere gera aviso
{
stop("Esta coluna não possui nomes de espécies")
}
if(missing(lista))
{
stop("Forneça uma lista de espécies")
}
##lendo banco de dados selecionado
if(bd=="brasil")
{
bdados=read.delim("http://dl.dropbox.com/s/xarlrvmwpujud12/BRASIL.txt",as.is=T)
}
if(bd=="nordeste")
{
bdados=read.delim("http://dl.dropbox.com/s/xw9hrkapgkiab2h/regiaoNORDESTE.txt",as.is=T)
}
if(bd=="norte")
{
bdados=read.delim("http://dl.dropbox.com/s/9cpt9zrbtsbva4z/regiaoNORTE.txt",as.is=T)
}
if(bd=="sudeste")
{
bdados=read.delim("http://dl.dropbox.com/s/mvemaqyn38r3f2t/regiaoSUDESTE.txt",as.is=T)
}
if(bd=="sul")
{
bdados=read.delim("http://dl.dropbox.com/s/w5i8xhwgyr5s8vu/regiaoSUL.txt", as.is=T)
}
if(bd=="centro-oeste")
{
bdados=read.delim("http://dl.dropbox.com/s/gkst0ca3josyp5o/regiaoCENTRO_OESTE.txt",as.is=T)
}
saida=matrix(ncol=3,nrow=dim(lista)[1]) ##objeto de saida #criando matriz vazia para salvar os dados
saida=as.data.frame(saida) ##convertendo em um data frame
colnames(saida)=c("Família","Espécies","Não encontradas") ##Nomes das colunas do arquivo de saída
for(i in 1:dim(lista)[1])
{
abc=agrep(lista[i,coluna],bdados[,1],ignore.case=T,value=T,max.distance = 0.01)#procurando espécie no banco de dados
saida[i,2]=abc[1] #substituindo espécie sem autor por espécie com autor do BD
}
falta=sum(is.na(saida[,2])) #número de nomes faltantes
encontrou=length(saida[,2])-sum(is.na(saida[,2])) #número de sp encontradas
percentual=round(100-((sum(is.na(saida[,2]))/length(saida[,2]))*100),2)#porcentagem das encontradas
saida[is.na(saida[,2]),3]="*" #coloca "*" na espécie que não foi encontrada
saida[!is.na(saida[,2]),3]="" #coloca "" na espécie que foi encontrada
saida[is.na(saida[,2]),2]=as.character(lista[is.na(saida[,2]),coluna]) #coloca os nomes fornecidos no lugar dos nomes faltantes
if(familia==TRUE)
{
saida[is.na(saida[,1]),1]=as.character(lista[is.na(saida[,1]),1]) #coloca os nomes fornecidos no lugar dos nomes faltantes
if(grafico==TRUE)
{
barplot(sort(table(lista[,1]),decreasing=T)[1:8],las=1,lwd=1.2, col=0,cex.axis=1.16,space=0.08,ylab="Número de espécies",cex.lab=1.15) ##plota as 8 famílias com mais espécies
abline(h=0) #acrescenta o eixo X
}
if(coluna==1)
{
saida=saida[,2:3]
}
}
else
{
saida=saida[,2:3] #caso não forneça o nome da família retira a coluna destinada aos nomes das famílias
}
if(csv==TRUE)
{
write.table(saida,file="Lista de espécies.csv",sep=";",row.name=F) ## salva uma planilha no diretório de trabalho
cat("Número de espécies não encontradas:",falta,"\n","Número de espécies econtradas:",encontrou,"\n","Porcentagem dos encontrados:",percentual,"%","\n","\n","Foi salvo um arquivo .CSV no seu dirétório de trabalho","\n")
}
else
{
cat("Número de espécies não encontradas:",falta,"\n","Número de espécies econtradas:",encontrou,"\n","Porcentagem dos encontrados:",percentual,"%","\n","\n","Não foi salvo um arquivo .CSV no seu dirétório de trabalho","\n")
}
return(saida)
}
== Arquivos da função ==
{{:bie5782:01_curso_atual:alunos:trabalho_final:diogosbr:help.txt|}}
{{:bie5782:01_curso_atual:alunos:trabalho_final:diogosbr:floristica2.r|}}
====== Espécies de angiospermas ======
Foram retirados do site da lista de espécies da Flora do Brasil os nomes das espécies que ocorrem no Brasil:
{{:bie5782:01_curso_atual:alunos:trabalho_final:diogosbr:nordeste.txt|Plantas do Nordeste}}