Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2013:alunos:trabalho_final:diogosbr:start

Diogo

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

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 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.

  1. 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

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:

Plantas do Nordeste

05_curso_antigo/r2013/alunos/trabalho_final/diogosbr/start.txt · Última modificação: 2020/08/12 06:04 (edição externa)