【发布时间】:2015-03-17 01:10:37
【问题描述】:
我在 R 中的函数上应用数据框时遇到困难。我有一个 data.frame,其中包含一个点的三列 ID、它在 x 轴上的位置和它在 y 轴上的位置。我需要做的就是为给定的点找到位于其附近的点的 ID。我已经创建了一个函数来显示该点是否位于中心是观察点位置的圆内,如果为真则返回它的 ID。
这是我的代码:
point_id <- locationdata$point_id
x_loc <- locationdata$x_loc
y_loc <- locationdata$y_loc
locdata <- data.frame(point_id, x_loc, y_loc)
#radius set to1km
incircle3 <- function(x_loc, y_loc, center_x, center_y, pointid, r = 1000000){
dx = (x_loc-center_x)
dy = (y_loc-center_y)
if (b <- dx^2 + dy^2 <= r^2){
print(shopid)} ##else {print('')}
}
不幸的是,我不知道如何在整个数据框上应用这个函数。因此,一旦我输入观察点的位置,它就会返回我附近所有点的 ID。理想情况下,我需要自动为所有点找到这种关系。所以它会返回数据集中每个点附近的点。以前我一直在手动插入 center_x 和 center_y。
非常感谢您提前提供的建议!
【问题讨论】:
-
apply系列函数正是您所需要的。不过,您的函数应该返回一个 list() 。它应该看起来像locdata$in_circle <- apply(locdata, 1, incircle3, y_loc)(第一个参数x_loc默认传递给函数)
标签: r