0
我试图将捕获的可变数量物种('nuse')应用于多个不同数据集的辛普森多样性指数。因此,我正在尝试构建可以自动应对这些问题的代码,而不必每次都手动构建公式。手动公式的示例数据集如下:可变长度公式构建
diverse <- data.frame(nuse1=c(0,20,40,20), nuse2=c(5,5,3,20), nuse3=c(0,2,8,20), nuse4=c(5,8,2,20), total=c(10,35,53,80))
simp <- function(x) {
total <- x[,"total"]
nuse1 <- x[,"nuse1"]
nuse2 <- x[,"nuse2"]
nuse3 <- x[,"nuse3"]
nuse4 <- x[,"nuse4"]
div <- round(((1-(((nuse1*(nuse1 - 1)) + (nuse2*(nuse2 - 1)) + (nuse3*(nuse3 - 1)) + (nuse4*(nuse4 - 1)))/(total*(total - 1))))),digits=4)
return(div)
}
diverse$Simpson <- simp(diverse)
diverse
正如你所见,这工作正常。但是,我如何能够创建一个功能,可以自动调整,例如,9种(到nuse9)?
我已经试验了粘贴功能+ as.formula,如Formula with dynamic number of variables所示;然而,这是我努力的(nuse1 *(nuse1 - 1))的扩展形式。有没有人有任何建议吗?谢谢。
完美地工作 - 谢谢! –