我是新来的R和我有一个简单的问题(我的意见),但我还没有找到一个解决方案为止。 我有2D(X,Y)的(长)设置的坐标 - 只是点在二维空间中,像这样的:
ID x y
1 1758.56 1179.26
2 775.67 1197.14
3 296.99 1211.13
4 774.72 1223.66
5 805.41 1235.51
6 440.67 1247.59
7 1302.02 1247.93
8 1450.4 1259.13
9 664.99 1265.9
10 2781.05 1291.12
etc.....
如何筛选在某些区域点(表中的行)(任何形状的!)? 如何筛选是指定坐标的子集内的点。 如何指定想要的/不必要区域的子集? 而如何把它放在R' :) THX很多提前!
要检查点内的任何类型的形状使用inpip
的功能splancs
包。
library(splancs)
set.seed(123)
my.shape <- matrix(runif(10), 5)
my.points <- data.frame(x=runif(500), y=runif(500))
my.points$in.shape <- 1:500 %in% inpip(my.points, my.shape)
plot(my.points[1:2], col=1 + my.points$in.shape)
polygon(my.shape)
为了测试多种形状,把它们放在一个列表,然后使用lapply
:
set.seed(127)
multi.shapes <- lapply(1:3, function(...) matrix(runif(6), 3))
my.points$in.multi.shapes <- 1:500 %in%
unlist(lapply(multi.shapes, function(p) inpip(my.points, p)))
plot(my.points[1:2], col=1 + my.points$in.multi.shapes)
for(p in multi.shapes) polygon(p)