我最近开始在R编程,我正在尝试计算数据集的斜率。这是我的代码:
slopes<- vector()
gdd.values <- length(unique(data.gdd$GDD))
for (i in 1:gdd.values){
subset.data <- data.gdd[which(data.gdd$GDD==i),]
volume <- apply(subset.data[,4,6],1,prod)
species.richness <- apply(subset.data[,7:59],1,sum)
slopes[i] <- lm(log(species.richness) ~ log(volume))$coefficients[2]
}
当我运行它时,“斜率”值仍为空。所有其他值都很好(没有其他空集)。如果你发现任何明显的错误,请告诉我。感谢
答案 0 :(得分:0)
目前,您正在迭代唯一值的长度而不是唯一值本身。因此,在@RobJensen注释时,调整for
循环向量和迭代。因此,为什么部分或全部返回值会导致丢失,因为 subset.data 可能由于过滤不精确而不包含任何行。
但是,考虑采用更简化的方法,使用经常未充分利用和忽略的by()
子集数据集按需要的分组因子,并将返回的列表绑定到向量中:
coeff_list <- by(data.gdd, data.gdd$GDD, FUN=function(df) {
volume <- apply(df[,4,6],1,prod)
species.richness <- apply(df[,7:59],1,sum)
lm(log(species.richness) ~ log(volume))$coefficients[2]
})
slopes <- do.call(c, coeff_list)