计算单株密度


title: "Calculate point density"
author: "Leiming Dong"
date: 'r Sys.time()'
output:
html_document:
number_sections: yes
toc: yes
pdf_document:
includes:
in_header: header.tex
latex_engine: xelatex


knitr::opts_chunk$set(echo = TRUE)

问题:当子代测定林存活率较低时,实际密度就会有较大的变化,因此测定效果就不够准确,如何解决密度不一致的问题?考虑给每个个体添加一个密度系数来矫正密度,不知可行与否。下面代码是用于密度系数的计算。代码比较笨,没有足够的时间来学习提高代码的执行效率,any way,能正确计算出来就够了。

计算密度系数

# 载入数据
load("D:/R/Spatial_Compete/8801_with_grid.RData")
df <- X8801_with_grid[1:20,]
df <- as.data.frame(df)

## 坐标
# r+1,c-1  r+1,c  r+1,c+1
# r,c-1  r,c  r,c+1
# r-1,c-1  r-1,c  r-1,c+1

# loop
for(i in 1:dim(df)[1]){
  r=df$Row2[i];c=df$Col2[i]
  
  if(nrow(df[df$Col2==c&df$Row2==r,])!=0) {
    
    num_neib <- c(
      nrow(df[df$Col2==c&df$Row2==r-1,])==0,
      nrow(df[df$Col2==c+1&df$Row2==r-1,])==0,
      nrow(df[df$Col2==c-1&df$Row2==r-1,])==0,
      
      nrow(df[df$Col2==c-1&df$Row2==r,])==0,
      nrow(df[df$Col2==c+1&df$Row2==r,])==0,
      
      nrow(df[df$Col2==c&df$Row2==r+1,])==0,
      nrow(df[df$Col2==c+1&df$Row2==r+1,])==0,
      nrow(df[df$Col2==c-1&df$Row2==r+1,])==0)
    
    df$space_indx[i] <- length(num_neib[num_neib==F])
  }else{
    df$space_indx[i] <- NA
  }
  cat(i,"\n")
}
mean(df$space_indx)
knitr::kable(head(df))

你可能感兴趣的:(计算单株密度)