问题:当子代测定林存活率较低时,实际密度就会有较大的变化,因此测定效果就不够准确,如何解决密度不一致的问题?考虑给每个个体添加一个密度系数来矫正密度,不知可行与否。下面代码是用于密度系数的计算。代码比较笨,没有足够的时间来学习提高代码的执行效率,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$Row[i];c=df$Col[i]
if(nrow(df[df$Col==c&df$Row==r,])!=0) {
num_neib <- c(
nrow(df[df$Col==c&df$Row==r-1,])==0,
nrow(df[df$Col==c+1&df$Row==r-1,])==0,
nrow(df[df$Col==c-1&df$Row==r-1,])==0,
nrow(df[df$Col==c-1&df$Row==r,])==0,
nrow(df[df$Col==c+1&df$Row==r,])==0,
nrow(df[df$Col==c&df$Row==r+1,])==0,
nrow(df[df$Col==c+1&df$Row==r+1,])==0,
nrow(df[df$Col==c-1&df$Row==r+1,])==0)
df$space_indx[i] <- length(num_neib[num_neib==F])
}else{
df$space_indx[i] <- NA
}
cat(i,"\n")
}
## 1
## 2
## 3
## 4
## 5
## 6
## 7
## 8
## 9
## 10
## 11
## 12
## 13
## 14
## 15
## 16
## 17
## 18
## 19
## 20
knitr::kable(head(df))
Treeid | Mum | Dad | Fam | Rep | Col | Row | h | dbh | notes | space_indx |
---|---|---|---|---|---|---|---|---|---|---|
81514 | 35 | NA | 1 | 1 | 36 | 36 | NA | NA | NA | 5 |
81515 | 35 | NA | 1 | 1 | 36 | 37 | NA | NA | NA | 4 |
81458 | 35 | NA | 1 | 1 | 35 | 34 | 15.0 | 14.0 | NA | 5 |
81512 | 35 | NA | 1 | 1 | 36 | 34 | 17.5 | 15.9 | NA | 3 |
81406 | 35 | NA | 1 | 1 | 34 | 34 | 17.7 | 15.2 | NA | 5 |
81358 | 35 | NA | 1 | 1 | 33 | 38 | NA | NA | NA | 1 |