# eval.linim

##### Evaluate Expression Involving Pixel Images on Linear Network

Evaluates any expression involving one or more pixel images on a linear network, and returns a pixel image on the same linear network.

- Keywords
- manip, spatial, programming

##### Usage

`eval.linim(expr, envir, harmonize=TRUE, warn=TRUE)`

##### Arguments

- expr
An expression in the R language, involving the names of objects of class

`"linim"`

.- envir
Optional. The environment in which to evaluate the expression.

- harmonize
Logical. Whether to resolve inconsistencies between the pixel grids.

- warn
Logical. Whether to issue a warning if the pixel grids were inconsistent.

##### Details

This function a wrapper to make it easier to perform
pixel-by-pixel calculations. It is one of several functions
whose names begin with `eval`

which work on objects of
different types. This particular function is designed to work with
objects of class `"linim"`

which represent
pixel images on a linear network.

Suppose `X`

is a pixel image on a linear network (object of
class `"linim"`

. Then `eval.linim(X+3)`

will add 3 to the value of every pixel in `X`

, and return
the resulting pixel image on the same linear network.

Suppose `X`

and `Y`

are two pixel images on the same
linear network, with compatible pixel dimensions. Then
`eval.linim(X + Y)`

will add the corresponding pixel values in
`X`

and `Y`

, and return the resulting pixel image
on the same linear network.

In general, `expr`

can be any expression in the R language involving
(a) the *names* of pixel images, (b) scalar
constants, and (c) functions which are vectorised.
See the Examples.

First `eval.linim`

determines which of the *variable names*
in the expression `expr`

refer to pixel images. Each such name
is replaced by a matrix containing the pixel values. The expression is
then evaluated. The result should be a matrix; it is taken as
the matrix of pixel values.

The expression `expr`

must be vectorised.
There must be at least one linear pixel image in the expression.

All images must have compatible dimensions.
If `harmonize=FALSE`

, images that are incompatible will cause an error.
If `harmonize=TRUE`

, images that have incompatible dimensions
will be resampled so that they are compatible; if `warn=TRUE`

,
a warning will be issued.

##### Value

An image object of class `"linim"`

.

##### See Also

##### Examples

```
# NOT RUN {
M <- as.mask.psp(as.psp(simplenet))
Z <- as.im(function(x,y) {x-y}, W=M)
X <- linim(simplenet, Z)
X
Y <- linfun(function(x,y,seg,tp){y^2+x}, simplenet)
Y <- as.linim(Y)
eval.linim(X + 3)
eval.linim(X - Y)
eval.linim(abs(X - Y))
Z <- eval.linim(sin(X * pi) + Y)
# }
```

*Documentation reproduced from package spatstat, version 1.64-1, License: GPL (>= 2)*