Trim zero rows or columns from an object of class Image.
Identify rows or columns of a matrix or 3-dimensional array that are all 0 and remove them.
trimImage(x, max2trim=.Machine$double.eps, na.rm=TRUE, returnIndices2Keep=FALSE, ...)
x |
a numeric matrix or 3-dimensional array or an object with subscripting defined so it acts like such. |
max2trim |
a single number indicating the max absolute numeric value to trim. |
na.rm |
logical: If If |
returnIndices2Keep |
if If If this is a list with two two
integer vectors, use them to trim
|
... |
Optional arguments; not currently used. |
1. Check arguments: 2 <=
length(dim(x))
<= 3?
is.logical(na.rm)
?
returnIndices2Keep
= logical
or list of 2 integer vectors, all
the same sign, not exceeding
dim(x)
?
2. if(is.list(returnIndices2Keep))
check that returnIndices2Keep
is a
list with 2 integer vectors, all the same
sign, not exceeding dim(x)
.
If yes, return x
appropriately
subsetted.
3. if(!is.logical(returnIndices2Keep))
throw an error message.
4. Compute indices2Keep
.
5. If(returnIndices2Keep)
return
(indices2Keep
) else return x
appropriately subsetted.
if(returnIndices2Keep==TRUE)
return
a list with 2 integer vectors to use as
subscripts in trimming objects like
x
.
Otherwise, return an object like x
appropriately trimmed.
Spencer Graves
trim
trims raster
images, similar to trimImage
.
trimws
trims leading and
trailing spaces from character strings
and factors. Similar trim
functions exist in other packages but
without obvious, explicit consideration
of factors
.
## ## 1. trim a simple matrix ## tst1 <- matrix(.Machine$double.eps, 3, 3, dimnames=list(letters[1:3], LETTERS[1:3])) tst1[2,2] <- 1 tst1t <- trimImage(tst1) # check tst1. <- matrix(1, 1, 1, dimnames=list(letters[2], LETTERS[2])) all.equal(tst1t, tst1.) ## ## 2. returnIndices2Keep ## tst2i <- trimImage(tst1, returnIndices2Keep=TRUE) tst2a <- trimImage(tst1, returnIndices2Keep=tst2i) tst2i. <- list(index1=2, index2=2) # check all.equal(tst2i, tst2i.) all.equal(tst2a, tst1.) ## ## 3. trim 0's only ## tst3 <- array(0, dim=3:5) tst3[2, 2:3, ] <- 0.5*.Machine$double.eps tst3[3,,] <- 1 tst3t <- trimImage(tst3, 0) # check tst3t. <- tst3[2:3,, ] # check all.equal(tst3t, tst3t.) ## ## 4. trim NAs ## tst4 <- tst1 tst4[1,1] <- NA tst4[3,] <- NA tst4t <- trimImage(tst4) # tst4o == tst4 tst4o <- trimImage(tst4, na.rm=FALSE) # check all.equal(tst4t, tst1[2, 2, drop=FALSE]) all.equal(tst4o, tst4) ## ## 5. trim all ## tst4a <- trimImage(tst1, 1) tst4a. <- matrix(0,0,0, dimnames=list(NULL, NULL)) all.equal(tst4a, tst4a.)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.