Índice
O Curso
Material de Apoio
Área dos Alunos
Visitantes
Forum
notaR
Área Restrita
Cursos Anteriores
IBUSP
Outras Insitutições
IBUSP
Outras Insitutições
Aluna de doutorado em Ecologia.
Departamento de Botânica, Instituto de Biologia, UNICAMP.
Título do projeto de pesquisa: Estrutura populacional e história de vida da espécie de liana Bignonia campanulata Cham. (Bignoniaceae) em um fragmento de Floresta Estacional Semidecídua no Sudeste do Brasil
Orientador: Fernando Roberto Martins
Uma função para analisar o design mecânico de plantas utilizando o cálculo do fator de segurança. O fator de segurança é a razão entre o diâmetro observado (Dobs) e o diâmetro crítico. O diâmetro crítico (Dcrit) é calculado pela fórmula Dcrit = 0,109H3/2, onde H é a altura e 0,109 é produto da constante de proporcionalidade (0,792) multiplicada pela razão entre o módulo de elasticidade (E) e a densidade da madeira (ρ). Portanto, se os dados de E e ρ não estiverem disponíveis para a espécie é recomendável usar o valor 0,109, calculado por McMahon (1973), pois segundo e Niklas (1993) E. ρ-1 é constante em gimnospermas e dicotiledôneas arbóreas. A entrada dos dados seria um data frame composto por: Dobs, Dcrit, H, E e ρ. O default será para considerar como existentes os dados de E e ρ , caso eles não existam será utilizada na equação a constante 0,109. O output da análise deverá resultar nos valores de fator de segurança para cada indivíduo e em um gráfico de dispersão no qual a variável independente deverá ter a altura e na variável dependente, o fator de segurança, ambos logaritmizados.
Uma função para dividir uma população em classes de tamanho. Para isso será utilizada a regra de Sturges: k= 1+ 3,322(log10n), onde n é o número de indivíduos, para se saber o número de classes. A amplitude das classes será calculada através da fórmula ac= At.k-1, sendo At o número de classes. A entrada dos dados deverá ser um data frame com as altura de cada indivíduo em cada linha. O output deverá resultar nas classes já divididas e um histograma com as classes no eixo x.
Ótimas propostas: gerais, factíveis mas não triviais. Para a primeira (que prefiro), considere que o usuário pode querer fazer o cálculo para uma única árvore, então a entrada não precisa ser necessariamente um dataframe. Muitas funções tem argumentos de entrada alterantivos, como cor
. Outro aprefeiçoamento (se vc tiver tempo) é não repetir o valor da densidade para indivíduos da mesma espécie.
safety.factor <- function (h, d, E = NULL, ro = NULL) { if(!is.numeric(h)&!is.integer(h)){ # Verificando se h é inteiro ou numérico stop("h não é númerico ou inteiro") } if(!is.numeric(d)&!is.integer(d)){ # Verificando se d é inteiro ou numérico stop("d não é númerico ou inteiro") } if(!is.null(E) & !is.null(ro)){ # se E e ro não são nulos verificar se são numéricos ou inteiros if(!is.numeric(E)&!is.integer(E)){ # Verificando se E é inteiro ou numérico stop("E não é númerico ou inteiro") } if(!is.numeric(ro)&!is.integer(ro)){ # Verificando se ro é inteiro ou numérico stop("ro não é númerico ou inteiro") } } if(is.null(E) & !is.null(ro)){ # Verificar se a pessoa informou o E e o ro. stop("Valores de E estão informados mas valores de ro não estão informados") } if(is.null(ro) & !is.null(E)){ # Verificar se a pessoa informou o E e o ro. stop("Valores de ro estão informados mas valores de E não estão informados") } if(is.null(E) & is.null(ro)){ # comparando os comprimentos de h e d quando não tem valores de E e ro if(length(h) != length(d)){ stop("vetores h e d não tem mesmo comprimento") } } if(!is.null(E) & !is.null(ro)){ # comparando os comprimentos de h e d quando tem valores de E e ro if(length(E) != length(ro)){ stop("Vetores E e ro não tem mesmo comprimento") } if(length(E) != length (h)){ # Comparando se E tem o mesmo comprimento de h e d stop("Vetor E não tem mesmo comprimento de h e d") } if(length(ro) != length(h)){ # Comparando se ro tem o mesmo comprimento de h e d stop("Vetor ro não tem mesmo comprimento de h e d") } } if(is.null(E) & is.null(ro)) { # se os valores de E e ro não existirem dcrit <- 0.109*(h^1.5) # vetor do diâmetro crítico } if(!is.null(E) & !is.null(ro)){ dcrit <- 0.792*(E/ro)*(h^1.5) # vetor do diâmetro crítico quando existe E e ro no dataframe } dif <- d - dcrit # verificando se há valores observados menores que os valores críticos if(sum(dif < 0) > 0){ # somando quantos valores são menores que zero cat("Há valores de diâmetro observado menores que valor de diâmetro crítico calculado") } bending <- d/dcrit # cálculo do fator de segurança windows() plot(h, bending, xlab = "Altura", ylab = "Fator de segurança", ylim = c(0,max(bending))) abline(h=1, col = "red") return(bending) }
safety.factor package: nenhum R Documentation Função para análise da estabilidade mecânica de plantas Description: Calcula o fator de segurança para plantas considerando o diâmetro crítico e observado. Plota um gráfico do fator de segurança em função da altura das árvores. Usage: ## Default method: safety.factor(x, y, E = NULL, ro = NULL) Arguments: x Altura de cada indivíduos em metros. y Diâmetro de cada indivíduos em centímetros. E módulo de elasticidade de cada indivíduo. ro densidade da madeira de cada indivíduo. Details: A função é aplicável apenas quando a altura está em metros e o diâmetro em centímetros. Se os valores de E e ro não estiverem disponíveis a função utilizará a constante 0.109, a qual é produto da constante de proporcionalidade (0,792) multiplicada pela razão entre o módulo de elasticidade (E) e a densidade da madeira (ro). Quandos os dados de E e ρ não estão disponíveis para a espécie é recomendável usar o valor 0,109, calculado por McMahon (1973), pois segundo Niklas (1993) E.(ro^-1) é constante em gimnospermas e dicotiledôneas arbóreas. A função retorna um vetor com os valores do fator de segurança (razão entre diâmetros observados e diâmetros críticos). A linha plotada no gráfico indica o limite crítico de tombamento elástico. Author (s): Luciana de Campos Franci Aluna de Doutorado em Ecologia na Universidade Estadual de Campinas, Campinas, Brasil. References: McMahon, T. 1973. Size and Shape in Biology. Science 179:1201-1204. Niklas, K. J. 1993. The scaling of plant height: a comparison among major plant clades and anatomical grades. Annal of Botany 72:165-172. Examples: # Cálculo do fator de segurança quando os valores de E e ro não estão disponíveis. (Dados fictícios) diametro <- c(0.9, 2, 2, 2.07, 2.71, 1.3, 2.05, 1.7, 1.08, 0.8) # Diâmetros dos indivíduos altura <- c(0.66, 2.2, 1.46, 1.7, 1.78, 1.16, 1.8, 1.02, 0.71, 0.47) # Alturas dos indivíduos safety.factor(h = altura, d = diametro) # Cálculo do fator de segurança quando os valores de E e ro estão disponíveis. (Dados fictícios) diametro <- c(0.9, 2, 2, 2.07, 2.71, 1.3, 2.05, 1.7, 1.08, 0.8) # Diâmetros dos indivíduos altura <- c(0.66, 2.2, 1.46, 1.7, 1.78, 1.16, 1.8, 1.02, 0.71, 0.47) # Alturas dos indivíduos elas <- c(0.2, 0.5, 0.6, 0.6, 0.5, 0.4, 0.5, 0.3, 0.2, 0.5) # Módulo de elasticidade dos indivíduos densi <- c(0.7, 0.6, 0.6, 0.5, 0.5, 0.4, 0.6, 0.8, 0.7, 0.6) # Densidade da madeira dos indivíduos p.decrit <- safety.factor(h = altura, d = diametro, E = elas, ro = densi)
Arquivo da função funcao_fator_de_seguranca.r Arquivo contendo a ajuda da função help_da_funcao.txt