# split.ppp

##### Divide Point Pattern into Sub-patterns

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

- Keywords
- spatial

##### 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.

##### 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 `i`

th 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`

.

Splitting can also be undone by the function `superimpose`

.

##### 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)

##### See Also

##### Examples

```
# 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 'on' cells
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)
```

*Documentation reproduced from package spatstat, version 1.5-4, License: GPL version 2 or newer*