的關鍵是在同一時間使用mapply()
到申請一個函數米 ultiple載體 - 在這裏:X和您的data.frame
的Y分量。哪個功能?爲data.frame
中的所有觀測結果添加Z
變量,該變量最多不超過「定位點」(我們運行所有條目)的radius
。
> set.seed(1)
> foo <- data.frame(X=runif(100),Y=runif(100),Z=runif(100))
> radius <- 0.5
> result <- mapply(function(X,Y,Z)
sum(foo$Z[(foo$X-X)^2+(foo$Y-Y)^2<=radius^2]),foo$X,foo$Y)
> head(cbind(foo,result))
X Y Z result
1 0.2655087 0.6547239 0.2675082 24.99153
2 0.3721239 0.3531973 0.2186453 30.51512
3 0.5728534 0.2702601 0.5167968 28.15519
4 0.9082078 0.9926841 0.2689506 12.10058
5 0.2016819 0.6334933 0.1811683 22.50695
6 0.8983897 0.2132081 0.5185761 19.05273
請注意,當然每個點的Z
本身都計入其半徑。如果你不想這樣做,你需要減去foo$Z
。
看看?mapply
。
看起來這只是計算每個點的鄰居數量。我想這個問題要求在相鄰點上的第三個變量Z的總和。也許OP可以澄清這是否真的回答了這個問題。 – 2014-11-26 13:06:46
Ege你是正確的,計數是不夠的,我需要總結「Z」。 該數據集與林業相關,涉及鄰近樹木引起的競爭。 「Z」是樹木的基礎面積,因爲較大的相鄰樹木比較小的樹木施加更多的競爭,因此數量不足。 – cd275 2014-12-01 16:44:48
感謝您的澄清。我編輯了我的答案。 – 2014-12-01 16:51:38