spatstat (version 1.6-1)

split.ppp: Divide Point Pattern into Sub-patterns

Description

Divides a point pattern into several sub-patterns, according to their marks, or according to any user-specified grouping.

Usage

split.ppp(x, f = x$marks)
  split(x, f) <- value

Arguments

x
A two-dimensional point pattern. An object of class "ppp".
f
Factor determining the grouping.
value
List of point patterns.

Value

  • The value of split.ppp is a list of point patterns. The components of the list are named by the levels of f.

    The assignment form split<-.ppp returns the updated point pattern x.

synopsis

split.ppp(x, f = x$marks)

Details

The function split.ppp divides up the points of the point pattern x into several sub-patterns according to the levels of the factor f. The result is a list of point patterns, one for each level of f.

If f is present, it must be a factor, and its length must equal the number of points in x. The levels of f determine the destination of each point in x. The ith point of x will be placed in the sub-pattern split.ppp(x)$l where l = f[i].

If f is missing, then x must be a multitype point pattern (a marked point pattern whose marks vector is a factor). Then the effect is that the points of each type are separated into different point patterns.

The result of split.ppp has class "splitppp" and can be plotted using plot.splitppp.

The assignment function split<-.ppp updates the point pattern x so that it satisfies split(x, f) = value. The argument value is expected to be a list of point patterns, one for each level of f. These point patterns are expected to be compatible in the sense that they all have the same window, and either they are all unmarked or they all have marks of the same kind.

Splitting can also be undone by the function superimpose.

See Also

cut.ppp, plot.splitppp, superimpose, ppp.object

Examples

Run this code
# Multitype point pattern: separate into types
 data(amacrine)
 u <- split(amacrine)

# the following are equivalent:
 amon <- amacrine[amacrine$marks == "on"]
 amon <- split(amacrine)$on
   
# plot them
 plot(split(amacrine))

# Scramble the locations of the 'on' cells
 u <- unmark(split(amacrine))
 u$on <- runifpoint(amon$n, amon$window)
 split(amacrine) <- u

# Point pattern with continuous marks
 data(longleaf)
 <testonly># smaller dataset
	longleaf <- longleaf[seq(1, longleaf$n, by=80)]</testonly>
 # cut the range of tree diameters into three intervals
 long3 <- cut.ppp(longleaf, 3)
 # now split them
 long3split <- split(long3)

# Unmarked point pattern
  data(swedishpines)
# cut & split according to nearest neighbour distance
  f <- cut(nndist(swedishpines), 3)
  u <- split(swedishpines, f)

Run the code above in your browser using DataCamp Workspace