spatstat.geom (version 2.1-0)

cut.ppp: Classify Points in a Point Pattern


Classifies the points in a point pattern into distinct types according to the numerical marks in the pattern, or according to another variable.


# S3 method for ppp
cut(x, z=marks(x), ...)



A two-dimensional point pattern. An object of class "ppp".


Data determining the classification. A numeric vector, a factor, a pixel image, a window, a tessellation, or a string giving the name of a column of marks or the name of a spatial coordinate.

Arguments passed to cut.default. They determine the breakpoints for the mapping from numerical values in z to factor values in the output. See cut.default.


A multitype point pattern, that is, a point pattern object (of class "ppp") with a marks vector that is a factor.


This function has the effect of classifying each point in the point pattern x into one of several possible types. The classification is based on the dataset z, which may be either

  • a factor (of length equal to the number of points in z) determining the classification of each point in x. Levels of the factor determine the classification.

  • a numeric vector (of length equal to the number of points in z). The range of values of z will be divided into bands (the number of bands is determined by ) and z will be converted to a factor using cut.default.

  • a pixel image (object of class "im"). The value of z at each point of x will be used as the classifying variable.

  • a tessellation (object of class "tess", see tess). Each point of x will be classified according to the tile of the tessellation into which it falls.

  • a window (object of class "owin"). Each point of x will be classified according to whether it falls inside or outside this window.

  • a character string, giving the name of one of the columns of marks(x), if this is a data frame.

  • a character string "x" or "y" identifying one of the spatial coordinates.

The default is to take z to be the vector of marks in x (or the first column in the data frame of marks of x, if it is a data frame). If the marks are numeric, then the range of values of the numerical marks is divided into several intervals, and each interval is associated with a level of a factor. The result is a marked point pattern, with the same window and point locations as x, but with the numeric mark of each point discretised by replacing it by the factor level. This is a convenient way to transform a marked point pattern which has numeric marks into a multitype point pattern, for example to plot it or analyse it. See the examples.

To select some points from a point pattern, use the subset operators [.ppp or subset.ppp instead.

See Also

cut, ppp.object, tess


 # (1) cutting based on numeric marks of point pattern
 trees <- longleaf
 # Longleaf Pines data
 # the marks are positive real numbers indicating tree diameters.

# }
 if(interactive()) {

 # cut the range of tree diameters into three intervals
 long3 <- cut(trees, breaks=3)
 if(interactive()) {

 # adult trees defined to have diameter at least 30 cm
 long2 <- cut(trees, breaks=c(0,30,100), labels=c("Sapling", "Adult"))
 plot(long2, cols=c("green","blue"))

 # (2) cutting based on another numeric vector
 # Divide Swedish Pines data into 3 classes
 # according to nearest neighbour distance

 plot(cut(swedishpines, nndist(swedishpines), breaks=3))

 # (3) cutting based on tessellation
 # Divide Swedish Pines study region into a 4 x 4 grid of rectangles
 # and classify points accordingly

 tes <- tess(xgrid=seq(0,96,length=5),ygrid=seq(0,100,length=5))
 plot(cut(swedishpines, tes))
 plot(tes, lty=2, add=TRUE)

 # (4) inside/outside a given region
 with(murchison, cut(gold, greenstone))

 # (5) multivariate marks
 cut(finpines, "height", breaks=4)
# }