1

だから私はいくつかのメトリックを計算したいいくつかのLIDARデータを持っています(コメントでデータへのリンクを添付します)。
また、周囲のLIDARポイントを抽出した地上プロットもあるため、プロットごとに数百ポイント(19プロット)になります。各ポイントには、X、Y、Z、地上高、および関連するプロットがあります。

プロットレベルで一連のメトリックを計算する必要があるため、を使用して作成plotsgroupedしましたsplit(plotpts, plotpts$AssocPlot)
これで、プロットごとに「ページ」を含むデータフレームができたので、「プロットページ」ですべてのメトリックを計算できます。これは個々のプロットに対してはうまく機能しますが、自動化したいと思います。(はい、19のプロットしかないことは知っていますが、それが原則です。気をつけてください!:-P)
これまでのところ、メトリックを計算して結果をと呼ばれるデータフレームに入れるforループがあります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()認識せず、代わりに失敗します。引用符を見て、「ああ、あなたはただのテキストだ、私はあなたの意味を理解できない」と考えているからだと私は推測した。またはその効果のために何か。 ところで、groupsは19のプロット名のリストです:PLT01-PLT27(非連続の場合もあります)とFTWRなので、名前の数字部分のシーケンスを単純に置くことはできません。テストプロット全体を反復処理して任意のメトリックを取得する簡単な方法はありますか? 私はすべての適切な部分を持っているように感じますが、私が欲しいものを私に与えるためにそれらがどのように一緒になっているのかわかりません。 また、誰かが質問のより良いタイトルを思い付くことができれば、pasteplotsgrouped$PLT27$Z



4

1 に答える 1

5

試してみてください:

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)])

}
于 2012-11-04T00:04:37.963 に答える