의 핵심은 한 번에 mapply()
에 기능 적용 에 m ultiple 벡터를 사용하는 것입니다 - 여기 : X 및 귀하의 data.frame
의 Y 구성 요소. 어떤 기능이 있습니까? data.frame
에있는 모든 관측치에 대해 변수를 추가하여 "앵커 포인트"(모든 항목에 대해 실행)에서 최대로 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가이 질문에 정말로 대답하는지 명확히 할 수있을 것입니다. –
당신은 정확합니다, 카운트가 충분하지 않습니다, 나는 "Z"를 합계해야합니다. 이 데이터 세트는 임업과 관련되며 이웃 나무에 의해 유발 된 경쟁을 다룹니다. "Z"는 나무의 기초 영역입니다. 큰 이웃 나무가 작은 나무보다 더 많은 경쟁을하기 때문에 그 수가 충분하지 않습니다. – cd275
설명해 주셔서 감사합니다. 나는 내 대답을 편집했다. –