Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2010:alunos:trabalho_final:mauromarabesi:start

Mauro Marabesi

Doutorando em botânica, trabalho com ecofisiologia na seção de fisiologia e bioquímica de plantas. Minha tese trata de trocas gasosas no nível foliar, demografia e fenologia foliar em diferentes fontes de N,(NO3, NH4 e NH4NO3), diferentes [NH4]e em CO2 elevado. Sou orientado pelo prof. Doutor Marcos S. Buckeridge.

Meus Exercícios

Proposta de Trabalho Final

Principal

Plano B

Página de Ajuda

 des.foliar              package:unknown            R Documentation


Description:

 Esta função calcula o desenvolvimento foliar. Este é definido como 
a longevidade de cada ordem foliar e as fases de vida, (fase de 
expansão, fase de maturidade e fase de senescência), expressas como 
porcentagens da longevidade foliar para cada ordem foliar.
Alternativamente, a função calcula a estrutura etária desta 
população de folhas ou folíolos. A estrutura etária é definida como 
a frquência relativa de cada classe de idade foliar.

Usage:

  des.foliar(x,fases=TRUE)

Arguments:
 
  x         dados de entrada no modelo, x deve ser um data.frame.
 
  fases     lógico. Se verdadeiro(TRUE, padrão da função) retorna
o desenvolvimento foliar. se falso (FALSE) a função retorna a 
estrutura etária. 

Details:

 o data.frame deve conter apenas as seguintes colunas: 
    ordem.foliar: números inteiros, representando a ordem de 
nascimento das folhas, pode ser inferida pela posição da folha no 
ramo ou no caule se este for monopodial.
    folíolo: números inteiros, representando o número de cada 
folíolo amostrado. Se a folha for simples esta coluna pode ser 
deixada em branco
    nascimento: número inteiro, representando o dia de 
nascimento do folíolo. Os dias são contados a partir do primeiro 
censo ou do início do experimento e não como data de calendário.
    expansao: número inteiro, representando o dia do final da 
expansão do folíolo
    senesc: número inteiro, representando o dia do início da 
senescência do folíolo.
    morte: número inteiro, representando o dia da morte do folíolo.

A estrututa etária é dividida em 6 classes de idades: 
de 0 a 20 dias de vida,de 21 a 40 dias de vida, de 41 a 60 dias de 
vida, de 61 a 80 dias de vida, de 81 a 100 dias de vida e 
> 100 dias de vida.
A estrutura etária é calculada de 10 em 10 dias a partir do 
vigésimo dia até o centésimo quadragésimo dia.

Value:

 O desenvolvimento foliar retorna uma matriz onde as linhas são 
as ordens foliares e as colunas contêm a longevidade e as fases 
de vida (expressas como porcentagens da longevidade).
 A estrutura etária retorna uma matriz na qual as linhas são as 
classes de idades e as colunas dias de experimento ou censo. 
(Os dias são contadosa partir do primeiro censo ou do início do 
experimento e não como data de calendário). 

Author:

Mauro Alexandre Marabesi
mauromarabesi@bol.com.br
mauromarabesi@usp.br

References:
Koike,T.(1990) Autumn coloring,photosynthetic performance and leaf 
development of deciduos broad-leaved trees in relation to forest 
succession. Tree Physiology 7,21-32
Kikuzawa,K.(1995) Leaf phenology as an optimal strategy for carbon 
gain in plants.Can.J.Bot 73,158-163
Diemer,M. and Korner,C.(1996) Lifetime leaf carbon balances of 
herbaceous perennial plants from low and high altitudes in the
central Alps. Functional Ecology 10,33-43


Exemples:


### Árvore secundária Tardia decídua###
matrix (NA,ncol=6,nrow=4)->decidua
colnames(decidua)=c("ordem.foliar","folíolo","nascimento",
"expansao","senesc","morte")
decidua[,1]<- 1:4
decidua[,2]<- 1
decidua[,3]<-c(10,12,14,15)
decidua[,4]=20+decidua[,3]
decidua[,5]<-120
decidua[,6]<-140
as.data.frame(decidua)->d
class(d)
des.foliar(d,fases=F)
des.foliar(d,fases=T)


###Árvore pioneira decídua###

matrix (NA,ncol=6,nrow=6)->pioneira
colnames(pioneira)=c("ordem.foliar","folíolo","nascimento",
"expansao","senesc","morte")
pioneira[,1]<- 1:6
pioneira[,3]<- seq(15,90,by=15)
pioneira[,4]<-c(25,35,60,80,90,100)
pioneira[,5]<-seq(80,130,by=10)
pioneira[,6]<- seq(90,140,by=10)
as.data.frame(pioneira)->p
class(p)
des.foliar(p,fases=F)
des.foliar(p,fases=T)
          

Código da função

des.foliar<-function (x,fases=TRUE)
   {
 if(fases==TRUE)

    {
    y=x 
    y$ordem.foliar<-as.factor(y$ordem.foliar) 
    ordem.foliares=unique(y[,"ordem.foliar"])
    resultado<-matrix(NA,nrow=length(ordem.foliares),ncol=4) 
    rownames(resultado)=paste("ordem",1:length(ordem.foliares)) 
    colnames(resultado)=c("Longevidade","%Expansão","%Madura","%Senescente") 
    longevidade=y$morte-y$nascimento  
    y<-data.frame(y,long=longevidade) 
    expansao=(y$expansao-y$nascimento) 
    por.exp=expansao/longevidade 
    y<-data.frame(y,por.exp=por.exp)
    maturidade=y$senesc-y$expansao 
    por.mad=maturidade/longevidade 
    y<-data.frame(y,por.mad=por.mad)
    senesc=y$morte-y$senesc 
    por.senesc=senesc/longevidade  
    y<-data.frame(y,por.senesc=por.senesc)
    for (i in 1:length(ordem.foliares))
   {
     resultado[i,1]=round(mean(y[y$ordem.foliar==i,7],na.rm=T),2)
   }
  
   for (i in 1:length(ordem.foliares))
   {
     resultado[i,2]=round(mean(y[y$ordem.foliar==i,8],na.rm=T),2)
   }
   for (i in 1:length(ordem.foliares))
   {
     resultado[i,3]=round(mean(y[y$ordem.foliar==i,9],na.rm=T),2)
   }
   for (i in 1:length(ordem.foliares))
   {
     resultado[i,4]=round(mean(y[y$ordem.foliar==i,10],na.rm=T),2)
   }
     return (resultado) 
    }
   else
   {
    x->b  
    b$morte[is.na(b$morte)==T]
    w<-c(seq(20,140,by=10)) 
   resul=matrix(NA,ncol=length(w),nrow=6) 
   colnames(resul)=c(w)
   rownames(resul)=c("0 a 20 dias","21 a 40 dias","41 a 60 dias","61 a 80 dias","81 a 100 dias","> 100 dias")
   longevidade.1<-b$morte-b$nascimento 
   res=matrix(NA,nrow=dim(b)[1],ncol=length(w))
   for(i in 1:length(w))
  {
    res[,i]=w[i]-b$nascimento
   }
   for(i in 1:length(w))
 {
  resul[1,i]=sum(res[,i]<=20 & res[,i]>0&res[,i]<=longevidade.1)/sum(res[,i]>0&res[,i]<=longevidade.1)
  resul[2,i]=sum(res[,i]<=40 & res[,i]>20&res[,i]<=longevidade.1)/sum(res[,i]>0&res[,i]<=longevidade.1)
  resul[3,i]=sum(res[,i]<=60 & res[,i]>40&res[,i]<=longevidade.1)/sum(res[,i]>0&res[,i]<=longevidade.1)
  resul[4,i]=sum(res[,i]<=80 & res[,i]>60&res[,i]<=longevidade.1)/sum(res[,i]>0&res[,i]<=longevidade.1)
  resul[5,i]=sum(res[,i]<=100 & res[,i]>80&res[,i]<=longevidade.1)/sum(res[,i]>0&res[,i]<=longevidade.1)
  resul[6,i]=sum(res[,i]>100&res[,i]<=longevidade.1)/sum(res[,i]>0&res[,i]<=longevidade.1)
  }
   round(resul,2)->a
    return(a)
  }
  } 

Script da função

Comentários

Maraba, tanto o plano A quanto o B são um desafios interessante de manipulação dos dados. Isso é poderoso no R e não é trivial. A principio me parece que o plano B oferece um desafio maior. Comece pelo plano B e se houver tempo inclua o plano A como uma opção de argumento na função.

Alexandre Adalardo de Oliveira 2010/03/31 10:43

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