Extract.ppp | R Documentation |
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.
## S3 method for class 'ppp'
x[i, j, drop=FALSE, ..., clip=FALSE]
## S3 replacement method for class 'ppp'
x[i, j] <- value
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. |
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.
A point pattern (of class "ppp"
).
The function does not check whether i
is a subset of
Window(x)
. Nor does it check whether value
lies
inside Window(x)
.
.
subset.ppp
.
ppp.object
,
owin.object
,
unmark
,
split.ppp
,
cut.ppp
# 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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.