简体   繁体   中英

R generate points with condition using runifpoint function

I am trying to generate randomly distributed points in a rectangle.

To create 50 random points in a rectangle, I used

i=50
  pp<-runifpoint(i, win=owin(c(0,19.5),c(0,3.12))

If I were to add conditions on the coordinates before randomly generating points,

eg 0.24 <x<19.26,0.24<y<2.64, then generate random points, what code can I imply?

The ultimate goal is to generate points in the rectangle except for the grey shaded area, in the below image

在此处输入图像描述

This is a question about the R package spatstat .

The argument win specifies the spatial region in which the points will be generated. In your example you have specified this region to be a rectangle. You just need to replace this rectangle by the region in which you want the points to be generated.

You can construct spatial regions (objects of class owin ) in many ways. See help(owin) , or help(spatstat) for an overview.

In your example, you could build up the shape by forming the union of several rectangles. For example to make a simple cross shape, I could just write

require(spatstat)
A <- owin(c(-1,1), c(-4, 4))
B <- owin(c(-4,4), c(-1,1))
U <- union.owin(A, B)
plot(U)

Another way would be to specify the corners of the polygon shape and use W <- owin(poly=p) where p = list(x, y) contains the coordinates of the corners, listed in anticlockwise order without repetition. See help(owin) .

This is also covered in Section 3.5 of the spatstat book . You can download Chapter 3 for free.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM