| Extract.ppp {spatstat.geom} | R Documentation | 
Extract or Replace Subset of Point Pattern
Description
Extract or replace a subset of a point pattern. Extraction of a subset has the effect of thinning the points and/or trimming the window.
Usage
  ## S3 method for class 'ppp'
x[i, j, drop=FALSE, ..., clip=FALSE]
  ## S3 replacement method for class 'ppp'
x[i, j] <- value
Arguments
| x | A two-dimensional point pattern.
An object of class  | 
| i | Subset index. Either a valid subset index in the usual R sense,
indicating which points should be retained, or a window
(an object of class  | 
| value | Replacement value for the subset. A point pattern. | 
| j | Redundant. Included for backward compatibility. | 
| drop | Logical value indicating whether to remove unused levels of the marks, if the marks are a factor. | 
| clip | Logical value indicating how to form the window of the resulting
point pattern, when  | 
| ... | Ignored. This argument is required for compatibility with the generic function. | 
Details
These functions extract a designated subset of a point pattern, or replace the designated subset with another point pattern.
The function [.ppp is a method for [ for the
class "ppp". It extracts a designated subset of a point pattern,
either by “thinning”
(retaining/deleting some points of a point pattern)
or “trimming” (reducing the window of observation
to a smaller subregion and retaining only
those points which lie in the subregion) or both.
The pattern will be “thinned”
if i is a subset index in the usual R sense:
either a numeric vector
of positive indices (identifying the points to be retained),
a numeric vector of negative indices (identifying the points
to be deleted) or a logical vector of length equal to the number of
points in the point pattern x. In the latter case, 
the points (x$x[i], x$y[i]) for which 
subset[i]=TRUE will be retained, and the others
will be deleted.
The pattern will be “trimmed”
if i is an object of class 
"owin" specifying a window of observation.
The points of x lying inside the new
window i will be retained. Alternatively i may be a
pixel image (object of class "im") with logical values;
the pixels with the value TRUE will be interpreted as a window.
The argument drop determines whether to remove
unused levels of a factor, if the point pattern is multitype
(i.e. the marks are a factor) or if the marks are a data frame
in which some of the columns are factors.
The function [<-.ppp is a method for [<- for the
class "ppp". It replaces the designated
subset with the point pattern value.
The subset of x to be replaced is designated by
the argument i as above.
The replacement point pattern value must lie inside the
window of the original pattern x.
The ordering of points in x will be preserved
if the replacement pattern value has the same number of points
as the subset to be replaced.  Otherwise the ordering is
unpredictable.
If the original pattern x has marks, then the replacement
pattern value must also have marks, of the same type.
Use the function unmark to remove marks from a
marked point pattern.
Use the function split.ppp to select those points
in a marked point pattern which have a specified mark.
Value
A point pattern (of class "ppp").
Warnings
The function does not check whether i is a subset of
Window(x). Nor does it check whether value lies
inside Window(x).
Author(s)
Adrian Baddeley Adrian.Baddeley@curtin.edu.au, Rolf Turner rolfturner@posteo.net and Ege Rubak rubak@math.aau.dk.
See Also
ppp.object,
owin.object,
unmark,
split.ppp,
cut.ppp
Examples
 # Longleaf pines data
 lon <- longleaf
 if(human <- interactive()) {
 plot(lon)
 }
 
 # adult trees defined to have diameter at least 30 cm
 longadult <- subset(lon, marks >= 30)
 if(human){
 plot(longadult)
 }
 # note that the marks are still retained.
 # Use unmark(longadult) to remove the marks
 
 # New Zealand trees data
 if(human){
 plot(nztrees)          # plot shows a line of trees at the far right
 abline(v=148, lty=2)   # cut along this line
 }
 nzw <- owin(c(0,148),c(0,95)) # the subwindow
 # trim dataset to this subwindow
 nzsub <- nztrees[nzw]
 if(human){
 plot(nzsub)
 }
 # Redwood data
 if(human){
 plot(redwood)
 }
 # Random thinning: delete 60% of data
 retain <- (runif(npoints(redwood)) < 0.4)
 thinred <- redwood[retain]
 if(human){
 plot(thinred)
 }
 # Scramble 60% of data
if(require(spatstat.random)) {
 X <- redwood
 modif <- (runif(npoints(X)) < 0.6)
 X[modif] <- runifpoint(ex=X[modif])
}
 # Lansing woods data - multitype points
 lan <- lansing
 
 # Hickory trees
  hicks <- split(lansing)$hickory
 # Trees in subwindow
  win <- owin(c(0.3, 0.6),c(0.2, 0.5))
  lsub <- lan[win]
if(require(spatstat.random)) {
 # Scramble the locations of trees in subwindow, retaining their marks
  lan[win] <- runifpoint(ex=lsub) %mark% marks(lsub)
}
 # Extract oaks only
 oaknames <- c("redoak", "whiteoak", "blackoak")
 oak <- lan[marks(lan) %in% oaknames, drop=TRUE]
 oak <- subset(lan, marks %in% oaknames, drop=TRUE)
 # To clip or not to clip
 X <- unmark(demopat)
 B <- owin(c(5500, 9000), c(2500, 7400))
 opa <- par(mfrow=c(1,2))
 plot(X, main="X[B]")
 plot(X[B], add=TRUE,
      cols="blue", col="pink", border="blue",
      show.all=TRUE, main="")
 plot(Window(X), add=TRUE)
 plot(X, main="X[B, clip=TRUE]")
 plot(B, add=TRUE, lty=2)
 plot(X[B, clip=TRUE], add=TRUE,
      cols="blue", col="pink", border="blue", 
      show.all=TRUE, main="")
 par(opa)