r-使用```ispe''d vector参考执行计算



所以我有一些激光雷达数据,我想计算一些指标(我将在评论中附加到数据的链接)。
我也有地面图可以提取周围的激光雷达点,因此我每个绘图有几百点(19个地块)。每个点都有x,y,z,地面上方的高度和相关的图。

我需要在图级别上计算一堆指标,因此我用split(plotpts, plotpts$AssocPlot)创建了plotsgrouped
因此,现在我有一个数据框,每个图都有一个"页面",因此我可以通过"绘图页面"计算所有指标。这只是为个别地块而做的花花公子,但我想自动化它。(是的,我知道只有19个地块,但这是它的原理,该死!:p)
到目前为止,我已经有一个用于计算指标的循环,并将结果放在称为Results的数据框架中。我也将这些组的名称拉到了一个名为groups的列表中。

for(i in 1:length(groups)){
Results$Plot[i] <- groups[i]
Results$Mean[i] <- mean(plotsgrouped$PLT01$Z)
Results$Std.Dev.[i] <- sd(plotsgrouped$PLT01$Z)
Results$Max[i] <- max(plotsgrouped$PLT01$Z)
Results$75%Avg.[i] <- mean(plotsgrouped$PLT01$Z[plotsgrouped$PLT01$Z <= quantile(plotsgrouped$PLT01$Z, .75)])
Results$50%Avg.[i] <- mean(plotsgrouped$PLT01$Z[plotsgrouped$PLT01$Z <= quantile(plotsgrouped$PLT01$Z, .50)])
...
and so on.

当我尝试做类似的事情时,问题出现了 Results$mean[i] <- mean(paste("plotsgrouped", groups[i],"Z", sep="$"))mean()不将paste识别为对向量plotsgrouped$PLT27$Z的引用,而是失败。我推论出来的是因为它看到了报价并思考:"哦,您只是一些文字,我无法理解您的卑鄙。"或某种效果。
顺便说一句,组是19个绘图名称的列表:PLT01-PLT27(有时非连续)和FTWR,所以我不能简单地为名称的数字部分放置一个序列。

任何人都有一种更轻松的方法来遍历我的测试图并获得任意指标?
我觉得我有所有正确的作品,但只是不知道它们如何一起给我我想要的东西。

另外,如果有人可以为这个问题提出更好的标题,请随时发布或更改它或其他任何问题。

尝试:

for(i in seq_along(groups)) {
  Results$Plot[i] <- groups[i] # character names of the groups
  tempZ = plotsgrouped[[groups[i]]][["Z"]]
  Results$Mean[i] <- mean(tempZ)
  Results$Std.Dev.[i] <- sd(tempZ)
  Results$Max[i] <- max(tempZ)
  Results$75%Avg.[i] <- mean(tempZ[tempZ <= quantile(tempZ, .75)])
  Results$50%Avg.[i] <- mean(tempZ[tempZ <= quantile(tempZ, .50)])
}

最新更新